【问题标题】:JavaScript Keyword CheckerJavaScript 关键字检查器
【发布时间】:2018-02-18 23:53:13
【问题描述】:

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

苹果很好吃,尤其是红苹果。

当前的计数如下所示:

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]);
    }
}

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

【问题讨论】:

    标签: javascript jquery keyword


    【解决方案1】:

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

    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, '');
      }
    });
    

    【讨论】:

    • 这真的很有帮助,谢谢。我很难理解这个想法,但是通过首先按字符串长度顺序排序来看看你是如何做到的,这是非常有意义的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-28
    • 2014-08-13
    • 2012-01-24
    相关资源
    最近更新 更多