JavaScript关键字检查器

时间:2018-02-18 23:53:14

标签: javascript jquery keyword

我有一个脚本,可以根据关键字数组检查大量文本,然后返回计数。我现在需要它能够过滤掉可能包含另一个关键字的关键字。例如:

  苹果很好吃,特别是红苹果。

目前的计数如下:

apples - 2 (counts "apples" twice)
red apples - 1

我想要的是让关键字独立,如下所示:

apples - 1
red apples - 1

我检查关键字的基本脚本:

content = ed.getContent().toLowerCase();
var words = ["apples", "red apples"];       
var count = [];                         

for (var i = 0, len = words.length; i < len; i++) {
    if (text.indexOf(words[i].toLowerCase()) > -1){
        var regex = new RegExp(words[i], "g");
        count[i] = (content.match(regex) || []).length;
        console.log(words[i] + " " + count[i]);
    }
}

我被困住了!任何帮助或推动正确的方向总是非常感谢!

1 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。我认为最简单的方法是对单词进行排序并修剪内容。

https://jsfiddle.net/a0h7xbfu/8/

var content = "red apples apples";
var words = ["apples", "red apples"];
var count = [];

words.sort(function(a, b) {
  var lenA = a.length;
  var lenB = b.length;
  if (lenA === lenB) {
    return 0;
  }
  return (lenA > lenB) ? -1 : 1;
});

words.forEach(function(word) {
  var regex = new RegExp(word, "g");
  var match = content.match(regex);
  if (match) {
    console.log(word + ": " + match.length);
    content = content.replace(regex, '');
  }
});
相关问题