所以我有一个大约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项,这可能会使浏览器崩溃。
有没有人知道在页面上替换单词的好方法?
答案 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.