如何用一行代码移除字符串中未知位置的指定单词及关联逗号?
用正则一行代码移除逗号分隔字符串中的指定单词
先看你的示例字符串:
String str = "Tom,Jerry,Brady,Patriots,TempaBay";
完全可以用正则表达式实现一行移除指定单词,不管它在开头、中间还是结尾,直接处理掉对应的逗号和单词组合:
核心实现代码
假设要移除的目标单词是targetWord,可以这样写:
str = str.replaceAll("^" + Pattern.quote(targetWord) + ",|," + Pattern.quote(targetWord) + "$|," + Pattern.quote(targetWord) + ",", "");
具体示例
- 移除开头的
Tom:
String str = "Tom,Jerry,Brady,Patriots,TempaBay"; str = str.replaceAll("^Tom,|,Tom$|,Tom,", ""); // 结果:Jerry,Brady,Patriots,TempaBay
- 移除中间的
Jerry:
str = str.replaceAll("^Jerry,|,Jerry$|,Jerry,", ""); // 结果:Tom,Brady,Patriots,TempaBay
- 移除结尾的
TempaBay:
str = str.replaceAll("^TempaBay,|,TempaBay$|,TempaBay,", ""); // 结果:Tom,Jerry,Brady,Patriots
正则逻辑说明
^Tom,:匹配字符串开头的Tom,(对应单词在首位的情况),Tom$:匹配字符串结尾的,Tom(对应单词在末位的情况),Tom,:匹配中间的,Tom,(对应单词在中间的情况)- 用
|把三种情况组合,替换为空字符串就完成了移除 - 加入
Pattern.quote(targetWord)是为了避免目标单词包含正则特殊字符(比如.、*)时出错,让正则把单词当作普通文本处理
这样就不用像你之前那样先替换再截字符串,一行代码就能搞定所有位置的单词移除。
内容的提问来源于stack exchange,提问作者Nicholas
相关产品推荐
相关产品推荐

