全部替换+ –

我试图将+字符替换为我的字符串中的hyphen

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

我尝试使用替换,但它抛出exception 。是否有任何其他方法来做到这一点。

使用

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

代码中的一些错误:

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

只需使用replace

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

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

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

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

代替…

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

此外, replaceAll方法产生一个字符串,因此不起作用。 尝试做:

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

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

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

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

你可以这么做。

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

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