在textarea中删除与数组字相同的单词

时间:2017-07-13 16:36:57

标签: javascript arrays string replace

我想帮忙完成这项任务。 我需要在文本区域中谴责与我的数组中的单词相似的单词。所有工作都很好地处理了谴责部分!它应该涵盖一个谴责词中的每一个字母(汽车应该是***),但不幸的是它覆盖它像一个*。 也许indexOf在这里有用吗?等待答案< 3

看起来像这样: enter image description here

以下是我希望您改进的代码:

<script>
    var words = ["meat", "lol"];
    document.querySelector('.container p').innerHTML = words.join(" ");
    document.getElementById('btnAdd').onclick = function () {
            words.push(document.getElementById('newWord').value);
            document.querySelector('.container p').innerHTML = words.join(" ");
        }
        //Replacing
    document.getElementById('btnCensura').onclick = function () {
            var str = document.getElementById('tArea').value;
            for (var i = 0; i < words.length; i++) {
                if (str.match(words[i])) {
                    str = str.replace(words[i], "*");
                }
            }
            document.getElementById('tArea').value = str;
        }
</script>

1 个答案:

答案 0 :(得分:0)

普通.replace仅替换第一次出现,如果要替换textarea中所有匹配的文本,请使用正则表达式

document.getElementById('btnCensura').onclick = function() {
  var str = document.getElementById('tArea').value;
  for(var i = 0; i < words.length; i++) {
    var re = new RegExp(words[i], "g");
    str = str.replace(re, "*".repeat(words[i].length));
  }
  document.getElementById('tArea').value = str;
}