删除单词字母之间的空格



我正在用java构建一个基本的亵渎过滤器,以检测用户输入中的亵渎行为。我并没有试图处理所有可能的场景,我知道这些场景可能只使用计算机是不可能解决的。然而,我确实想处理一些计算机应该适合处理的基本场景。在这种特殊的情况下,我试图检测到一个用户试图通过在字母之间使用空格来破坏过滤器。例如:"你好,我在这里用的是一个s m u r f词"。(蓝精灵是这里的"坏"字)。

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

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

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

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

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

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

并尝试在文本中找到它

boolean found = Pattern.compile(regex).matcher(text).find();

最新更新