您好我想在字符串
中替换以下字符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:它应该用一个类似于[]
的字符框替换〜^答案 0 :(得分:5)
据我所知,你根本不需要正则表达式?
如果不需要正则表达式,您可以使用replace
代替replaceAll
,这也将替换所有出现但不会将第一个参数解释为正则表达式(请参阅{{3} })
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
答案 1 :(得分:2)
^
匹配输入字符串的开头,因此您的正则表达式~^
无法匹配任何内容。您需要将其转义以匹配文字"^"
:
String x = a.replaceAll("~\\^", "");
请注意,~
不是特殊字符,不需要转义。
或者,如果您想一次性替换~!
,~!~^
和~^
,请尝试:
String x = a.replaceAll("~!~\\^|~!|~\\^", "");
答案 2 :(得分:1)
^表示行的开头,所以我假设java以这种方式解释它,在这种情况下,模式永远不会匹配任何东西。你需要用反斜杠来逃避它,加倍以使它超过java,所以“〜\\ ^”。