簡體   English   中英

用.replaceAll替換特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM