Java replaceAll函数的字符串不替换

时间:2011-05-26 08:18:47

标签: java

  

可能重复:
  Wrong output using replaceall

如果我有字符串:

String test = "replace()thisquotes";

test = test.replaceAll("()", "");

测试结果仍为:test = "replace()thisquotes"

so()未被替换。

有什么想法吗?

6 个答案:

答案 0 :(得分:11)

您不需要正则表达式,因此请使用:

test.replace("()", "")

答案 1 :(得分:2)

正如其他人所指出的,在这种情况下你可能想要使用String.replace,因为你不需要正则表达式。


但是,作为参考,使用String.replaceAll时,需要引用第一个参数(解释为正则表达式),最好使用Pattern.quote

String test = "replace()thisquotes";

test = test.replaceAll(Pattern.quote("()"), "");
//                     ^^^^^^^^^^^^^

System.out.println(test);  // prints "replacethisquotes"

答案 2 :(得分:0)

replaceAll函数的第一个参数是正则表达式。 “(”字符是正则表达式中的特殊字符。 使用此:

public class Main {

   public static void main(String[] args) {
      String test = "replace()thisquotes";
      test = test.replaceAll("\\(\\)", "");
      System.out.println(test);
   }
}

答案 3 :(得分:0)

你必须转义(),因为它们是为正则表达式保留的字符:

String test = "replace()thisquotes";
test = test.replaceAll("\\(\\)", "");

答案 4 :(得分:0)

test = test.replaceAll("\\(\\)", "").

Java替换所有使用正则表达式,因此在您的示例中“()”是一个空组,请使用转义字符'\“。

答案 5 :(得分:0)

您必须首先引用您的String,因为括号是正则表达式中的特殊字符。看看Pattern.qutoe(String s)

test = test.replaceAll(Pattern.quote("()"), "");