我有一个接受字符串的函数。
ignoreWords.contains(InString.toLowerCase());
我希望这个Instring
格式为"abc"
,这是任何没有任何字符的字符串。但我的InString
格式可能为"abc"
或",abc"
。现在,我正在处理如下
ignoreWords.contains(text.toLowerCase().replaceAll(",","")));
但是此Insting
格式可以是".abc"
或"abc."
或"(abc)"
。我不想编写多个replaceAll
函数或编写多个if
语句来检查InString
是否包含,
或.
等。< / p>
InString
可能是以下格式之一",abc"
,"abc,"
,".abc"
,"abc."
,",abc,"
,{{1} },".abc."
,",abc."
,".abc,"
。 InString可能会以"(abc)"
或",(abc)"
或"(abc),"
或"(abc)."
或".(abc)"
或",(abc),"
的形式出现这种格式的可能性非常小
使用正则表达式编写单个".(abc)."
调用的有效方法是什么?它以简短的方式提供解决方案?
答案 0 :(得分:1)
为什么你甚至更换其他角色?
反过来检查:
boolean shouldIgnore(String inString, List<String> ignoreWords){
for(String ignoreWord:ignoreWords){
if(inString.contains(ignoreWord)){
return true;
}
}
return false;
}
通过这种方式,您可以检查inString是否包含任何要忽略的单词而不替换输入字符串中的anythin。
答案 1 :(得分:1)
replaceAll
将正则表达式作为第一个参数,因此您可以这样做:
ignoreWords.contains(text.toLowerCase().replaceAll("[.(),]", ""));
这将使用空字符串替换所有.
,(
,)
和,
。