0

我在java中组合了一个基本的亵渎过滤器来检测用户输入的亵渎。我并不是要处理所有可能的情况,我知道这些情况可能仅使用计算机是不可能解决的。但是,我确实想处理一些计算机应该适合处理的基本场景。在这种特殊情况下,我试图检测一个用户试图通过使用字母之间的空格来破坏过滤器。例如:“你好,我在这里使用 asmurf 词”。(蓝精灵在这里是“坏”词)。

在我当前的实现中,我保留了我检查输入文本的单词列表:

public boolean containsBadWords (String text) {

    for (String word : badWords) {
        if (text.matches (".*\\b" + word  +"\\b.*")) {
            return (true);
        }
    }

    return (false);
}

但这不会处理我上面描述的空格字母问题。

任何人都知道如何使用 Java 折叠这些单词,以便我可以使用基本的文本匹配算法来处理它们?

4

1 回答 1

1

准备一个禁用词列表,检查单词,将单词转换为正则表达式,例如 "smurf" -> " s *m *u *r *f * "

String regex = " " + word.replaceAll("(.)", "$1 *") + " ";

并尝试在文本中找到它

boolean found = Pattern.compile(regex).matcher(text).find();
于 2013-07-27T03:36:41.687 回答