0

在java中,我的字符串引用变量包含以下值

String str=".NET CLR 内存~^1~^";

现在我想从中删除~^1~^。我使用如下的 replaceAll 方法

字符串 str2=str.replaceAll("~^1~^","");

但 str2 仍然包含 ~^1~^

任何人都可以解释为什么会这样以及如何删除它。

4

4 回答 4

7

请注意,它String#replaceAll需要一个正则表达式而不是一个字符串。解决方案:

  1. 您应该转义元字符。当您这样做时,字符串将被视为字符串而不是正则表达式。

    转义字符是通过\在 Regex 之前编写的,但在 Java 中,\表示为\\,因此您应该编写:

    String str2=str.replaceAll("~\\^1~\\^","");

  2. 另一种解决方案是使用replace()需要一个字符串,你会没事的。

  3. 最后一个解决方案是使用正Pattern#quote则表达式并将其用作字符串。

    String str2=str.replaceAll(Pattern.quote("~^1~^"),"");

于 2013-10-16T12:00:32.823 回答
3

使用replace(),不使用replaceAll()

replaceAll()使用正则表达式作为其目标,并且您的搜索词是不可能匹配正则表达式的。
replace()替换(所有出现的)纯文本。

做这个:

String str2 = str.replace("~^1~^","");
于 2013-10-16T12:00:24.960 回答
2

这对你有用。~^1~^不是字符串。

System.out.println(".NET CLR Memory~^1~^".replace("~^1~^",""));

或者

System.out.println(".NET CLR Memory~^1~^".replaceAll("\\~\\^1\\~\\^",""));
于 2013-10-16T12:05:37.660 回答
1

你可以试试这个。

String str=".NET CLR Memory~^1~^";
String str2=str.replaceAll("~\\^1~\\^","");
System.out.println(str2);
于 2013-10-16T12:01:34.073 回答