You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现字符串敏感词替换为中间带星号功能代码无效果排查

代码问题排查

  • 正则转义错误:Java字符串中反斜杠需要二次转义,你写的split("\s+")属于语法错误,编译阶段就会失败,无法正常运行。正确写法为split("\\s+")。
  • 替换索引逻辑错误:你定义的index变量仅在匹配到敏感词时才自增,非敏感词遍历过程中index不会变化,会导致匹配到敏感词时错误覆盖数组前序位置的元素,而非替换当前遍历位置的敏感词,自然看不到替换效果。
  • 冗余空格问题:最后拼接结果时每个单词后都加空格,会导致返回结果末尾多一个多余空格,同时原文本的连续多空格会被统一替换为单个空格,如果需要保留原文本空格格式,该逻辑不符合要求。

优化后的实现代码

这里改用HashMap存储敏感词和对应替换结果,维护更方便,同时修正了所有问题:
如果不需要严格匹配独立单词、希望保留原文本空格格式,直接全局替换即可:

import java.util.HashMap;

public class Censor {
    public static String AsteriskCensor(String text){
        HashMap<String, String> badWordMap = new HashMap<>();
        badWordMap.put("word1", "w*rd1");
        badWordMap.put("word2", "w*rd2");
        badWordMap.put("word3", "w*rd3");
        badWordMap.put("word4", "w*rd4");
        badWordMap.put("word5", "w*rd5");
        badWordMap.put("word6", "w*rd6");

        for (String badWord : badWordMap.keySet()) {
            text = text.replace(badWord, badWordMap.get(badWord));
        }
        return text;
    }
}

如果需要严格按空格拆分、仅替换独立完整的敏感词,可以用下面的实现:

import java.util.HashMap;

public class Censor {
    public static String AsteriskCensor(String text){
        String[] wordList = text.split("\\s+");
        HashMap<String, String> badWordMap = new HashMap<>();
        badWordMap.put("word1", "w*rd1");
        badWordMap.put("word2", "w*rd2");
        badWordMap.put("word3", "w*rd3");
        badWordMap.put("word4", "w*rd4");
        badWordMap.put("word5", "w*rd5");
        badWordMap.put("word6", "w*rd6");

        StringBuilder result = new StringBuilder();
        for (int i = 0; i < wordList.length; i++) {
            result.append(badWordMap.getOrDefault(wordList[i], wordList[i]));
            if (i != wordList.length - 1) {
                result.append(" ");
            }
        }
        return result.toString();
    }
}

内容的提问来源于stack exchange,提问作者Phong2902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:24:00