在java中,我的字符串引用变量包含以下值
String str=".NET CLR 内存~^1~^";
现在我想从中删除~^1~^。我使用如下的 replaceAll 方法
字符串 str2=str.replaceAll("~^1~^","");
但 str2 仍然包含 ~^1~^
任何人都可以解释为什么会这样以及如何删除它。
请注意,它String#replaceAll
需要一个正则表达式而不是一个字符串。解决方案:
您应该转义元字符。当您这样做时,字符串将被视为字符串而不是正则表达式。
转义字符是通过\
在 Regex 之前编写的,但在 Java 中,\
表示为\\
,因此您应该编写:
String str2=str.replaceAll("~\\^1~\\^","");
另一种解决方案是使用replace()
需要一个字符串,你会没事的。
最后一个解决方案是使用正Pattern#quote
则表达式并将其用作字符串。
String str2=str.replaceAll(Pattern.quote("~^1~^"),"");
使用replace()
,不使用replaceAll()
。
replaceAll()
使用正则表达式作为其目标,并且您的搜索词是不可能匹配正则表达式的。
replace()
替换(所有出现的)纯文本。
做这个:
String str2 = str.replace("~^1~^","");
这对你有用。~^1~^
不是字符串。
System.out.println(".NET CLR Memory~^1~^".replace("~^1~^",""));
或者
System.out.println(".NET CLR Memory~^1~^".replaceAll("\\~\\^1\\~\\^",""));
你可以试试这个。
String str=".NET CLR Memory~^1~^";
String str2=str.replaceAll("~\\^1~\\^","");
System.out.println(str2);