如何使用Java的String.replaceAll方法替换加号字符

时间:2009-03-04 12:29:47

标签: java regex

加号字符(+)的正确正则表达式是String类中Java的replaceAll方法的第一个参数(即要替换的字符串)是什么?我无法正确理解语法。

7 个答案:

答案 0 :(得分:85)

您需要使用+转义正则表达式的\

但是,Java使用String参数构造正则表达式,它使用\作为自己的转义序列。所以你必须逃避\本身:

"\\+"

答案 1 :(得分:31)

如有疑问,请让java为您完成工作:

myStr.replaceAll(Pattern.quote("+"), replaceStr);

答案 2 :(得分:14)

你需要用\来转义+,因为\本身是Java字符串中的一个特殊字符,你需要用另一个\来转义它。

因此,您的正则表达式字符串将在Java代码中定义为“\\ +”。

即。这个例子:

String test = "ABCD+EFGH";
test = test.replaceAll("\\+", "-");
System.out.println(test);

答案 3 :(得分:2)

如果你想要一个简单的字符串查找和替换(即你不需要正则表达式),使用StringUtils from Apache Commons可能会更简单,这将允许你写:

mystr = StringUtils.replace(mystr, "+", "plus");

答案 4 :(得分:2)

其他人已经说过正确的方法:

  1. +转发为\\+
  2. 使用转义所有正则表达式元字符的Pattern.quote方法。
  3. 您可以使用的另一种方法是将+放入字符类中。许多正则表达式元字符(.*+等等)都在字符类中进行字面处理。

    所以你也可以这样做:

    orgStr.replaceAll("[+]",replaceStr);
    

    Ideone Link

答案 5 :(得分:0)

String str="Hello+Hello";   
str=str.replaceAll("\\+","-");
System.out.println(str);

OR

String str="Hello+Hello";   
str=str.replace(Pattern.quote(str),"_");
System.out.println(str);

答案 6 :(得分:0)

如何用不确定的重复次数替换多个“ +”?

示例:test + test + test + 1234

(+)或[+]似乎只选择一个文字字符,但重复一次。