【发布时间】:2016-06-19 17:11:35
【问题描述】:
所以我有一个大约 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 个可能会使浏览器崩溃的项目。
有没有人知道在页面上替换单词的好方法?
【问题讨论】:
-
至少有一部分与this answer相关,this answer的代码是用来创建Drumfinator Chrome插件的。 :-)
-
"问题是我有一千个关键字" 如果你可以预先构建
{keyword: 'value'}散列整个操作将是O(n),其中n是其中的单词数,这不是问题文本。 -
假设不是每个单词都是唯一的,您可以索引单词,取唯一值,比较前 3,5 或 7 个字母并替换值,然后重建字符串。跨度>
标签: javascript regex substitution