我想查看禁止词。
在我的代码中,
public static String filterText(String sText) {
Pattern p = Pattern.compile("test", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(sText);
StringBuffer buf = new StringBuffer();
while (m.find()){
m.appendReplacement(buf, maskWord(m.group()));
}
m.appendTail(buf);
return buf.toString();
}
public static String maskWord(String str) {
StringBuffer buf = new StringBuffer();
char[] ch = str.toCharArray();
for (int i = 0; i < ch.length; i++) {
buf.append("*");
}
return buf.toString();
}
如果您收到句子&#34; test is test&#34;,则表示为&#34; ****是****&#34;使用上面的代码。
但我想过滤掉至少几十到几百个字。
单词存储在DB中。(DB Type:Oralce)
那我如何检查多个单词?
答案 0 :(得分:-1)
假设您使用的是Java 9,则可以使用Matcher.replaceAll
替换一个语句中的单词。您还可以使用String.replaceAll
将每个字符替换为&#39; *&#39;。
模式中可以包含许多替代方案。您可以使用所需的所有单词构建一个模式。
Pattern pattern = Pattern.compile("(word1|word2|word3)");
String result = pattern.matcher(input)
.replaceAll(w -> w.group(1).replaceAll(".", "*"));
或者,您可以拥有一个模式列表,然后依次替换每个模式:
for (Pattern pattern: patternList)
result = pattern.matcher(result)
.replaceAll(w -> w.group(1).replaceAll(".", "*"));