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

如何用JS将textarea中引号包裹的内容替换为等长X实现文本审查

解决方案

现有代码的HTML、CSS部分不需要调整,只需要修改JS逻辑即可。之前修改时报JS错误基本都是正则中双引号未正确处理导致的语法异常,下面给出的代码已经规避该问题,同时实现两个核心效果:一是保留原有预设关键词屏蔽能力,二是自动将所有双引号包裹的文本替换为等长X,引号本身保留、引号内空格原样保留,和你给出的示例效果完全一致。

修改后可直接使用的JS代码

替换原main.js的全部内容即可:

const submitBtn = document.getElementById('formSub');

function censorWords(event) {
    event.preventDefault();
    const textInput = document.getElementById('input');
    // 自定义需要额外屏蔽的关键词列表
    const blockKeywords = ["red"];
    textInput.value = getCensoredText(textInput.value, blockKeywords);
}

function getCensoredText(originText, filters) {
    // 优先处理双引号包裹的内容
    let censoredText = originText.replace(/"([^"]*)"/g, (match, innerContent) => {
        let replacedContent = '';
        for (let i = 0; i < innerContent.length; i++) {
            // 引号内空格保留,其余字符替换为X
            replacedContent += innerContent[i] === ' ' ? ' ' : 'X';
        }
        return `"${replacedContent}"`;
    })

    // 执行关键词屏蔽,不需要该功能可以直接删掉这部分代码
    if (filters.length) {
        const keywordReg = new RegExp(filters.join("|"), "gi");
        censoredText = censoredText.replace(keywordReg, (match) => {
            return 'X'.repeat(match.length);
        })
    }

    return censoredText;
}

submitBtn.addEventListener('click', censorWords)

效果测试

  • 输入The dog is "red",输出:The dog is "XXX"
  • 输入The dog is "quite big",输出:The dog is "XXXXX XXX"
  • 引号外出现列表内的关键词(比如red),也会自动替换为等长X

如果不需要保留引号内的空格,把循环里的空格判断删除,所有字符统一替换为X即可;如果需要适配中文引号“”,只需要在正则规则里补充对应引号的匹配逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:21:19