基本上,这就是我想要做的是:
String s = "to+go+la";
s.replaceAll("to+go", "");
应该返回"+la"
我知道如果我只是替换 + 符号,我会使用\\+
,但我不确定嵌入符号时该怎么做。将它们从两者中删除是最好的答案吗?这将适用于我的目的,但它似乎是一个管道胶带的答案。
基本上,这就是我想要做的是:
String s = "to+go+la";
s.replaceAll("to+go", "");
应该返回"+la"
我知道如果我只是替换 + 符号,我会使用\\+
,但我不确定嵌入符号时该怎么做。将它们从两者中删除是最好的答案吗?这将适用于我的目的,但它似乎是一个管道胶带的答案。
...但这似乎是一个胶带的答案。
这似乎是一个“胶带”的答案,因为您还没有了解为什么\+
在仅替换“+”字符时需要使用。
答案是“+”是一个正则表达式元字符。它的意思是“在此之前的字符或组可能出现一次或多次”。
如果您想"to+go"
被视为文字字符串(而不是正则表达式),那么执行此操作的一种方法是“正则表达式引用”它;例如
s.replaceAll(Pattern.quote("to+go"), "");
另一方面,如果+
字符完全不相关,那么删除它们也可以工作......
这个怎么样:
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","");
您的案例不需要正则表达式,因此使用它是不合适的。它既慢又麻烦。使用简单明了replace
的代替,replaceAll
你不需要逃避任何事情:
String s = "to+go+la".replace("to+go", "");