基本上,我正在尝试做的就是:
String s = "to+go+la";
s.replaceAll("to+go", "");
应返回"+la"
我知道如果我只是替换+符号,我会使用\\+
,但我不知道在嵌入符号时我该怎么做。是从两者中删除它们的最佳答案吗?这可以用于我的目的,但它似乎是胶带回答。
答案 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", "");