今天寫代碼時遇到需要解析由第三方系統傳來的字元串,但是測試過程中發現第三方系統傳來的字元串中包含\n\t等字元( 不是回車換行,是字元串中包含 )。如:My name is \“ZhangSan\”\n\t, nice to\n meet\t you.
原因可能是第三方系統的回車換行符被當成字元傳過來了。自己搞了半天終于用java代碼把這些字元删除了。話不多說,代碼如下:
public class Test {
public static void main(String[] args) throws Exception {
//第三方系統傳的字元串
String str = "My name is \\\"ZhangSan\\\"\\n\\t, nice to\\n meet\\t you.";
//列印轉義後的字元
System.out.println("轉義後的字元串為:" + str);
//删除\n
str = str.replace("\\n","");
//或者:str = str.replaceAll("\\\\n","");
//删除\t
str = str.replace("\\t","");
//或者:str = str.replaceAll("\\\\t","");
//最後删除單個的反斜杠
str = str.replace("\\","");
//或者:str = str.replaceAll("\\\\","");
}
}
運作結果如下:

總結:用replece删除時隻需要在前面加上轉義字元\即可,但是用replaceAll删除時需要加3個轉義字元,即\\\\n。原因:replaceAll方法會把連續的兩個反斜杠\\變成了一個反斜杠.