Javascript - 如何替换页面内容中的文字

Javascript - How to replace words inside page content

所以我有一个大约 1,000 个单词的列表,如果它们出现在页面上,它们将被替换为某些内容。我试着用正则表达式来做,所以对于每千个单词我都替换了这样的内容:

    var pattern = new RegExp("(.*?)([^A-Za-z_/\-]+)("+title+")([^A-Za-z_\./\-]+)(.*?)","ig");

    content = content.replace( pattern, function replacer(contents,start,before,value,after,end) {

    var key = value.toLowerCase();

但事实证明这种方法真的很慢。另一种方法是将页面内容拆分为单词,然后检查是否有任何部分与任何关键字相同。问题是我有一千个关键词,所以在一个有 10,000 个词的页面上,我必须遍历 10,000 X 1,000 个项目,这可能会使浏览器崩溃。

有谁知道在页面上替换文字的好方法吗?

这很慢,因为对于每个单词,您要再次测试整个内容。最好为任何单词制作一个正则表达式,然后在散列中查找:

// Make your "dictionary" first:
var replacements = {
    "replace": "R",
    "this": "T",
    "etc": "..."
};

var content = "Should replace this with letters.";

var output = content.replace(/\w+/g, function replacer(word) {
    return replacements[word.toLowerCase()] || word;
});

console.log(output);

输出为:

Should R T with letters.