Javascript - 如何替换页面内容中的单词

时间:2016-06-19 17:11:35

标签: javascript regex substitution

所以我有一个大约1000个单词的列表,如果它们出现在页面上,则会被某些内容替换。我尝试使用正则表达式,所以对于千言万语中的每一个,我都会替换这样的内容:

    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项,这可能会使浏览器崩溃。

有没有人知道在页面上替换单词的好方法?

1 个答案:

答案 0 :(得分:1)

这很慢,因为对于每个单词,您都会再次测试整个内容。最好为任何单词创建一个正则表达式,然后在哈希中查找:

// 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.