java - 删除单词字母之间的空格

标签 java text filter processing profanity

我正在用java编写一个基本的脏话过滤器来检测用户输入的脏话。我并不是试图处理所有可能的情况,我知道仅使用计算机可能无法解决这些情况。但是,我确实想处理计算机应该适合处理的一些基本场景。在这种特殊情况下,我试图检测试图通过在字母之间使用空格来破坏过滤器的用户。例如:“你好,我在这里使用 s m u r f 词”。 (蓝 Sprite 在这里是“坏”词)。

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

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();

关于java - 删除单词字母之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17892888/

相关文章:

c# - 在大文本文件中用\r\n 替换\n

以不同格式显示代码的 Android Studio 编辑器

在 Activity 之间传递对象时出现 java.io.NotSerializedException

c# - C# 中的验证框架?

java - 如何从 firebase 检索 UID 并将其添加到 firebase DB 的子级

Java 完全限定类名称,从终端运行

python - 统计文本文件中字母出现的频率

jquery - 获取 jQuery .filter() 结果的相反/相反结果

JQuery 不会使用值进行过滤

jquery - 基于 .data() 键/值的过滤元素