我的目标是替换字符串中的某个子字符串,该子字符串不会改变那些不严格表示子字符串的子字符串。写下来有点令人困惑,所以让我给你看一个例子。
说我有字符串
"StackOverflow Stack Overflow Stacks"
现在我想替换"Stack"
,如果我要使用
x.replaceAll("Stack", "")
我会得到
"Overflow Overflow s"
这是不希望的,相反,我想要以下内容:
"StackOverflow Overflow Stacks"
答案 0 :(得分:2)
\\bStack\\b
答案 1 :(得分:2)
您的要求并不完全清楚。
您需要考虑要替换"Stack"
的条件。
一个很好的例子是单词边界:x.replaceAll("\\bStack\\b", "")
这将确保替换非字字符所包围的"Stack"
,而"Stack"
的其他实例将保持不变。
您可能希望更具体,只有在被空格包围时才能替换:
x.replaceAll("(?<=\\s)Stack(?=\\s)", "") // replaces only "Stack"
x.replaceAll("\\sStack\\s", "") // also gets rid of the surrounding whitespace
等等...
答案 2 :(得分:0)
您可以使用字边界来完成此任务:
使用以下代码:
String abc = "StackOverflow Stack Overflow Stacks";
abc = abc.replaceAll("\\bStack\\b", "");
System.out.println(abc);
结果打印为 StackOverflow溢出堆栈