我正在尝试删除文本中出现的所有单词.单词保存在数组中.
但是我没有删除它们,而是将原始文本恢复原状:
var text = "This is just a little test, to check if it works."
var words = ["this", "is", "a", "to", "if", "it"];
for (i = 0; i < words.length; i++) {
text = text.replace(/words[i]/g, "")
}
alert(text); // result should be: just little test, check works.
Run Code Online (Sandbox Code Playgroud)
这是一个小提琴:https://fiddle.jshell.net/y07qgooq/
在您的代码words[i]中不会被解释为javascript语言,而是作为正则表达式语言,并且只会匹配"wordsi".您可以按以下方式制作正则表达式:
new RegExp("\\b" + words[i] + "\\b", "g")
Run Code Online (Sandbox Code Playgroud)
我添加了\b单词边界以确保删除的单词不是单词的一部分.
如果要匹配前导"This",还需要添加不区分大小写的标志i:
new RegExp("\\b" + words[i] + "\\b", "gi")
Run Code Online (Sandbox Code Playgroud)
如果您没有标点符号,则使用以下替代方法会更有效:
在ES6中:
text.split(" ").filter(word => words.indexOf(word) == -1).join(" ");
Run Code Online (Sandbox Code Playgroud)
在ES6之前:
text.split(" ").filter(function(word) { return words.indexOf(word) == -1; }).join(" ");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |