-1

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

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

我尝试使用替换,但它抛出了一个exception。有没有其他方法可以做到这一点。

4

6 回答 6

4

只需使用replace

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

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

于 2013-01-29T07:14:13.620 回答
4

利用

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

您的代码中有一些错误:

  • replaceAll接受字符串,而不是字符
  • +char 必须转义,因为第一个参数是正则表达式(并且它\本身必须在 java 字符串文字中转义)
  • 您必须返回函数:由于 String 是不可变的,因此函数不会更改它,而是返回另一个字符串
于 2013-01-29T07:12:41.830 回答
1

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

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

String str = "word+word";
str = str.replaceAll("\\+ ", "-");
于 2013-01-29T07:13:32.410 回答
1

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

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

反而...

于 2013-01-29T07:14:22.623 回答
0

在 replaceAll 中使用 "" 而不是 ''。

String java.lang.String.replaceAll(字符串正则表达式,字符串替换)

于 2013-01-29T07:13:54.467 回答
0

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

你可以简单地做到这一点。

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

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

于 2013-01-29T07:21:44.447 回答