用 - 替换所有+

时间:2013-01-29 07:11:18

标签: java

我正在尝试将+字符替换为我的字符串中的hyphen

String str = "word+word";
str.replaceAll('+ ', '-');

我尝试使用替换,但它抛出exception。是否有其他方法可以执行此操作。

6 个答案:

答案 0 :(得分:4)

使用

str = str.replaceAll("\\+", "-");

代码中的一些错误:

  • replaceAll需要字符串,而不是字符
  • 必须转义+ char,因为第一个参数是正则表达式(并且\本身必须在java字符串文字中转义)
  • 你必须接受函数的返回:因为String是不可变的,函数不会改变它但返回另一个字符串

答案 1 :(得分:4)

只需使用replace

str = str.replace('+', '-');

这个不适用于正则表达式,但可以按原样使用字符。
另外如您所见,您必须再次向str变量重新赋值,因为Java中的String是不可变的。在这种情况下,方法replace不会更改当前Stringstr),但会创建一个将+替换为' - '的新文件。

答案 2 :(得分:1)

replaceAll函数将正则表达式作为其第一个参数。碰巧+是正则表达式语言中的特殊字符。尝试将+替换为\\+。这将逃脱加号,从而使代码像普通字符一样对待它。

此外,replaceAll方法会产生一个字符串,因此无效。尝试做:

String str = "word+word";
str = str.replaceAll("\\+ ", "-");

答案 3 :(得分:1)

`replaceAll'用于正则表达式,字符串是不可变的。使用:

str = str.replace("+", "-");

,而不是...

答案 4 :(得分:0)

在replaceAll中使用“”而不是''。

String java.lang.String.replaceAll(String regex,String replacement)

答案 5 :(得分:0)

如果您不确定需要使用的转义序列,

你可以这样做。

str = str.replaceAll(Pattern.quote("+"), "-");

这将自动转义正则表达式预定义标记以文字方式匹配