[英]replacing special chars with .replaceAll
您好我想在字符串中替換以下字符
String a = "20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A";
System.out.println(a);
String x = a.replaceAll("~^", "");
System.out.println(x);
但是我的輸出是:
20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A
20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A
顯然有些事情發生了!
我用逃脫字符運行它:
String x = fix.replaceAll("\\~^", "\\");
產量仍然相同。 有什么東西與〜我不知道有關聯嗎?
我必須這樣做:
〜!〜^
〜!
所有在同一個字符串中,我認為3 .replaceAll最長,然后是另外兩個。 然而,即使是最簡單的工作,我也無法做到:S
編輯:由於某種原因被刪除
Edit2:它應該用一個類似於[]的字符框替換〜^
據我所知,你根本不需要正則表達式?
如果不需要正則表達式,則可以使用replace
而不是replaceAll
,它也將替換所有出現但不會將第一個參數解釋為正則表達式(請參閱String.replace )
String a = "20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A";
System.out.println(a);
String x = a.replace("~^", "");
System.out.println(x);
這將輸出:
20001=EDTS~^20002=USA~^20003=1170871875~^20004=1~^20005=0~^773=~^665=~^453=2~^448=0A
20001=EDTS20002=USA20003=117087187520004=120005=0773=665=453=2448=0A
^
匹配輸入字符串的開頭,因此你的正則表達式~^
不可能匹配任何東西。 你需要轉義它以匹配文字"^"
:
String x = a.replaceAll("~\\^", "");
請注意, ~
不是特殊字符,不需要轉義。
或者如果你想替換~!
, ~!~^
和~^
一氣呵成,試試:
String x = a.replaceAll("~!~\\^|~!|~\\^", "");
^在正則表達式中意味着行的開頭,所以我假設java以這種方式解釋它,在這種情況下,模式永遠不會匹配任何東西。 你需要用反斜杠來逃避它,加倍以使它超過java,所以“〜\\\\ ^”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.