1

基本上,这就是我想要做的是:

String s = "to+go+la";

s.replaceAll("to+go", "");

应该返回"+la"

我知道如果我只是替换 + 符号,我会使用\\+,但我不确定嵌入符号时该怎么做。将它们从两者中删除是最好的答案吗?这将适用于我的目的,但它似乎是一个管道胶带的答案。

4

3 回答 3

4

...但这似乎是一个胶带的答案。

这似乎是一个“胶带”的答案,因为您还没有了解为什么\+在仅替换“+”字符时需要使用。

答案是“+”是一个正则表达式元字符。它的意思是“在此之前的字符或组可能出现一次或多次”。


如果您想"to+go"被视为文字字符串(而不是正则表达式),那么执行此操作的一种方法是“正则表达式引用”它;例如

s.replaceAll(Pattern.quote("to+go"), "");

另一方面,如果+字符完全不相关,那么删除它们也可以工作......

于 2012-08-19T07:37:40.857 回答
1

这个怎么样:

  String input = "to+go+la";
  String result = input.replaceAll("to\\+go","");
  System.out.println(result);

为什么这是一个糟糕的模式?您所说的嵌入式是这样的吗?

 String input = "to+++go+la";

如果是这样,那么唯一会改变的是模式:

 String result = input.replaceAll("to(\\+)+go","");
于 2012-08-19T07:51:00.310 回答
1

您的案例不需要正则表达式,因此使用它是不合适的。它既慢又麻烦。使用简单明了replace的代替,replaceAll你不需要逃避任何事情:

String s = "to+go+la".replace("to+go", "");
于 2012-08-19T10:54:58.870 回答