Java 敏感词替换

在开发过程中,我们经常会遇到需要对敏感词进行过滤或替换的情况。敏感词的存在可能会影响用户体验,甚至引发一些不必要的麻烦。在 Java 中,我们可以通过一些方法来实现对敏感词的替换,保护用户信息安全。

敏感词过滤

敏感词过滤是指在用户输入文本中检测是否包含敏感词汇,并将其替换为其他符号或删除。在 Java 中,我们可以使用正则表达式来实现敏感词过滤。

下面是一个简单的敏感词过滤的示例代码:

public class SensitiveWordFilter {
    
    public String filter(String text) {
        String sensitiveWord = "敏感词";
        String replacement = "***";
        
        String regex = "\\b" + sensitiveWord + "\\b";
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(text);
        
        return matcher.replaceAll(replacement);
    }
    
    public static void main(String[] args) {
        SensitiveWordFilter filter = new SensitiveWordFilter();
        String text = "这是一段包含敏感词的文本:敏感词";
        String filteredText = filter.filter(text);
        System.out.println(filteredText);
    }
}

在上面的代码中,我们定义了一个 SensitiveWordFilter 类,其中包含一个 filter 方法用于过滤文本中的敏感词。我们通过正则表达式来匹配敏感词,并将其替换为指定的符号。

敏感词替换

除了简单的敏感词过滤外,有时候我们还需要对敏感词进行替换,而不是直接删除。这样可以保留原始文本的完整性,同时避免暴露敏感信息。

下面是一个敏感词替换的示例代码:

public class SensitiveWordReplace {
    
    public String replace(String text) {
        Map<String, String> sensitiveWords = new HashMap<>();
        sensitiveWords.put("敏感词1", "***");
        sensitiveWords.put("敏感词2", "###");
        
        for (Map.Entry<String, String> entry : sensitiveWords.entrySet()) {
            String sensitiveWord = entry.getKey();
            String replacement = entry.getValue();
            text = text.replaceAll("\\b" + sensitiveWord + "\\b", replacement);
        }
        
        return text;
    }
    
    public static void main(String[] args) {
        SensitiveWordReplace replace = new SensitiveWordReplace();
        String text = "这是一段包含敏感词的文本:敏感词1,敏感词2";
        String replacedText = replace.replace(text);
        System.out.println(replacedText);
    }
}

在上面的代码中,我们定义了一个 SensitiveWordReplace 类,其中包含一个 replace 方法用于替换文本中的敏感词。我们使用一个 Map 来存储敏感词和对应的替换值,然后遍历进行替换操作。

敏感词检测

除了过滤和替换敏感词之外,有时候我们还需要检测文本中是否包含敏感词,以便做出相应的处理。在 Java 中,我们可以通过 Trie 树来实现敏感词的检测。

下面是一个使用 Trie 树实现敏感词检测的示例代码:

public class SensitiveWordDetection {
    
    private TrieNode root = new TrieNode();
    
    public void addSensitiveWord(String word) {
        TrieNode node = root;
        for (char c : word.toCharArray()) {
            if (!node.containsKey(c)) {
                node.put(c, new TrieNode());
            }
            node = node.get(c);
        }
        node.setEnd();
    }
    
    public boolean containsSensitiveWord(String text) {
        TrieNode node = root;
        for (int i = 0; i < text.length(); i++) {
            char c = text.charAt(i);
            if (node.containsKey(c)) {
                node = node.get(c);
                if (node.isEnd()) {
                    return true;
                }
            } else {
                node = root;
            }
        }
        return false;
    }
    
    public static void main(String[] args) {
        SensitiveWord