当前位置:首页 > Java

java如何屏蔽敏感词

2026-03-18 20:13:57Java

使用正则表达式过滤敏感词

通过正则表达式匹配敏感词并进行替换或拦截。将敏感词存储为模式,利用String.replaceAll()方法替换为星号或其他符号。

String text = "包含敏感词的文本";
String sensitiveWords = "敏感词1|敏感词2|敏感词3"; // 用|分隔多个敏感词
String filteredText = text.replaceAll(sensitiveWords, "*");
System.out.println(filteredText);

基于Trie树的高效匹配

构建Trie树存储敏感词库,实现高效的多模式匹配。适合大规模敏感词过滤场景。

class TrieNode {
    Map<Character, TrieNode> children = new HashMap<>();
    boolean isEnd;
}

public class SensitiveFilter {
    private TrieNode root = new TrieNode();

    public void addWord(String word) {
        TrieNode node = root;
        for (char c : word.toCharArray()) {
            node.children.putIfAbsent(c, new TrieNode());
            node = node.children.get(c);
        }
        node.isEnd = true;
    }

    public String filter(String text) {
        StringBuilder result = new StringBuilder();
        int i = 0;
        while (i < text.length()) {
            TrieNode node = root;
            int j = i;
            while (j < text.length() && node.children.containsKey(text.charAt(j))) {
                node = node.children.get(text.charAt(j));
                j++;
                if (node.isEnd) {
                    result.append("*");
                    i = j;
                    break;
                }
            }
            if (i < text.length()) {
                result.append(text.charAt(i));
                i++;
            }
        }
        return result.toString();
    }
}

使用第三方库(如Hutool)

Hutool等工具库提供现成的敏感词过滤工具,简化开发流程。

// 引入Hutool依赖后使用
WordTree wordTree = new WordTree();
wordTree.addWords("敏感词1", "敏感词2");
String text = "测试敏感词1过滤";
List<String> matchAll = wordTree.matchAll(text);
matchAll.forEach(word -> text = text.replace(word, "*"));

结合数据库动态加载

将敏感词存储在数据库或文件中,支持动态更新。程序启动时加载词库,定期刷新缓存。

java如何屏蔽敏感词

// 伪代码示例:从数据库加载敏感词
List<String> words = jdbcTemplate.queryForList("SELECT word FROM sensitive_words", String.class);
TrieTree trie = new TrieTree();
words.forEach(trie::addWord);

注意事项

  • 性能优化:对于高频调用场景,建议使用Trie树或AC自动机算法。
  • 大小写处理:过滤前统一转为小写(或大写)以避免绕过。
  • 特殊字符:需处理空格、符号等干扰项(如敏*感*词)。
  • 动态更新:通过定时任务或监听机制更新词库。

标签: 屏蔽敏感
分享给朋友:

相关文章

php实现敏感词过滤

php实现敏感词过滤

PHP实现敏感词过滤的方法 敏感词过滤是Web开发中常见的需求,PHP可以通过多种方式实现。以下是几种常用方法: 使用str_replace函数进行简单替换 $sensitiveWords = ['…

php实现敏感词过滤

php实现敏感词过滤

使用正则表达式匹配敏感词 将敏感词存储为数组,通过正则表达式构建匹配模式。使用preg_replace函数替换敏感词为指定字符(如*)。 $sensitiveWords = ['敏感词1', '敏感…

js实现敏感词过滤

js实现敏感词过滤

敏感词过滤的实现方法 敏感词过滤是Web开发中常见的需求,可以通过多种方式在JavaScript中实现。以下是几种常用方法: 正则表达式匹配 使用正则表达式可以快速检测文本中是否包含敏感词。需要预先…