删除字母之间的空格

时间:2013-07-27 00:10:32

标签: java text filter processing profanity

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

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

public boolean containsBadWords (String text) {

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

    return (false);
}

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

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

1 个答案:

答案 0 :(得分:1)

准备禁用单词列表,翻阅单词,将单词转换为正则表达式,例如“smurf” - > “s * m * u * r * f *”

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

并尝试在文本中找到它

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