适用于以下类型字符串的通用正则表达式
A generic regex that will work for the following kind of string
我有一个接受字符串的函数。
ignoreWords.contains(InString.toLowerCase());
我希望这个 Instring
的格式为 "abc"
,即没有任何字符的任何字符串。但是我的 InString
可能会以 "abc"
或 ",abc"
的格式出现。目前,我是这样处理的
ignoreWords.contains(text.toLowerCase().replaceAll(",","")));
但是这个 Insting
的格式可能是 ".abc"
或 "abc."
或 "(abc)"
。我不想编写多个 replaceAll
函数或编写多个 if
语句来检查 InString
是否包含 ,
或 .
等
InString
可能是以下格式之一",abc"
、"abc,"
、".abc"
、"abc."
、",abc,"
、".abc."
、",abc."
、".abc,"
、"(abc)"
。 InString 也以 ",(abc)"
或 "(abc),"
或 "(abc)."
或 ".(abc)"
或 ",(abc),"
或 ".(abc)."
这种格式出现的可能性非常小.
使用正则表达式编写单个 replaceAll
调用的有效方法是什么,它以简短且更简单的方式提供解决方案?
为什么还要替换其他角色?
反过来检查一下:
boolean shouldIgnore(String inString, List<String> ignoreWords){
for(String ignoreWord:ignoreWords){
if(inString.contains(ignoreWord)){
return true;
}
}
return false;
}
通过这种方式,您可以检查 inString 是否包含任何要忽略的单词,而无需替换输入字符串中的任何内容。
replaceAll
将正则表达式作为第一个参数,因此您可以这样做:
ignoreWords.contains(text.toLowerCase().replaceAll("[.(),]", ""));
这会将所有 .
、(
、)
和 ,
替换为空字符串。
我有一个接受字符串的函数。
ignoreWords.contains(InString.toLowerCase());
我希望这个 Instring
的格式为 "abc"
,即没有任何字符的任何字符串。但是我的 InString
可能会以 "abc"
或 ",abc"
的格式出现。目前,我是这样处理的
ignoreWords.contains(text.toLowerCase().replaceAll(",","")));
但是这个 Insting
的格式可能是 ".abc"
或 "abc."
或 "(abc)"
。我不想编写多个 replaceAll
函数或编写多个 if
语句来检查 InString
是否包含 ,
或 .
等
InString
可能是以下格式之一",abc"
、"abc,"
、".abc"
、"abc."
、",abc,"
、".abc."
、",abc."
、".abc,"
、"(abc)"
。 InString 也以 ",(abc)"
或 "(abc),"
或 "(abc)."
或 ".(abc)"
或 ",(abc),"
或 ".(abc)."
这种格式出现的可能性非常小.
使用正则表达式编写单个 replaceAll
调用的有效方法是什么,它以简短且更简单的方式提供解决方案?
为什么还要替换其他角色?
反过来检查一下:
boolean shouldIgnore(String inString, List<String> ignoreWords){
for(String ignoreWord:ignoreWords){
if(inString.contains(ignoreWord)){
return true;
}
}
return false;
}
通过这种方式,您可以检查 inString 是否包含任何要忽略的单词,而无需替换输入字符串中的任何内容。
replaceAll
将正则表达式作为第一个参数,因此您可以这样做:
ignoreWords.contains(text.toLowerCase().replaceAll("[.(),]", ""));
这会将所有 .
、(
、)
和 ,
替换为空字符串。