将replaceAll与包含Java中特殊字符的字符串一起使用

时间:2012-08-19 07:32:43

标签: java special-characters replaceall

基本上,我正在尝试做的就是:

String s = "to+go+la";

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

应返回"+la"

我知道如果我只是替换+符号,我会使用\\+,但我不知道在嵌入符号时我该怎么做。是从两者中删除它们的最佳答案吗?这可以用于我的目的,但它似乎是胶带回答。

3 个答案:

答案 0 :(得分:4)

  

......但它似乎是胶带回答。

这似乎是一个“胶带”的答案,因为当你只更换一个“+”字符时,你还没有学会为什么需要使用\+

答案是“+”是一个正则表达式元字符。这意味着“此前的角色或群组可能会出现一次或多次”。


如果你希望"to+go"被视为文字字符串(而不是正则表达式),那么一种方法是将“正则表达式引用”它;例如

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

另一方面,如果+个字符完全不相关,那么删除它们也会有用......

答案 1 :(得分: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","");

答案 2 :(得分:1)

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

String s = "to+go+la".replace("to+go", "");