在java中,我的字符串引用变量包含以下值
String str=".NET CLR Memory~^1~^";
现在我要从中删除〜^ 1~ ^。我使用replaceAll方法如下
String str2=str.replaceAll("~^1~^","");
但是str2仍然包含〜^ 1~ ^
任何机构都可以解释为什么会这样以及如何删除它。
答案 0 :(得分:7)
请注意,String#replaceAll
采用正则表达式而不是字符串。解决方案:
你应该逃避meta-characters。执行此操作时,String将被视为字符串而不是正则表达式。
通过在正则表达式之前编写\
来完成转义字符,但在Java中,\
表示为\\
,因此您应该写:
String str2=str.replaceAll("~\\^1~\\^","");
另一种解决方案是使用带有字符串的replace()
,你会没事的。
上一个解决方案是使用Pattern#quote
获取正则表达式并将其用作字符串。
String str2=str.replaceAll(Pattern.quote("~^1~^"),"");
答案 1 :(得分:3)
使用replace()
,而不是replaceAll()
。
replaceAll()
使用正则表达式作为其目标,并且您的搜索字词无法匹配正则表达式。
replace()
替换(所有出现的)纯文本。
这样做:
String str2 = str.replace("~^1~^","");
答案 2 :(得分:1)
你可以试试这个。
String str=".NET CLR Memory~^1~^";
String str2=str.replaceAll("~\\^1~\\^","");
System.out.println(str2);
答案 3 :(得分:1)
这对你有用。 ~^1~^
不是字符串。
System.out.println(".NET CLR Memory~^1~^".replace("~^1~^",""));
或者
System.out.println(".NET CLR Memory~^1~^".replaceAll("\\~\\^1\\~\\^",""));