JavaScript在某些文本中检查了很多关键字?

时间:2012-08-28 11:12:44

标签: javascript google-apps-script

请问最好的方法是检查某些文字句子是否包含一些关键字,并且可能有100个关键字。

例如:

var text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
var keywords = ["lorem", "sit", "elit", "sed do"];

现在最好和最快的方式来检查关键字是否在文本中,但是整个单词不是单词的一部分,而且不区分大小写

BTW它的谷歌脚本,也许有一些我没看到的功能:\

提前致谢

4 个答案:

答案 0 :(得分:3)

for(var i = 0; i <= keywords. length - 1; i++) {
  var a = new RegExp('\\b' + keywords[i] + '\\b', 'gi');
  if(a.test(text)) {
    alert('Match ! - ' + keywords[i]);
  }
}

答案 1 :(得分:2)

var text = "Lorem Ipsumdolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
var keywords = ["Lorem", "ipsum", "not there", "Sed do"];

for (var i in keywords) {
    var index = new RegExp("\\b" + keywords[i] + "\\b", "i");
    if (text.match(index)) {
        alert(keywords[i]);
        // do something
    }
}

答案 2 :(得分:2)

尝试这些方面的东西。

var text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
var keywords = ["lorem", "sit", "elit", "sed do"];
var words = text.split(/[\s,]+/); //Add all other delimiters you want to include. 
for(var i in words){ 
   words[i] = words[i].toLowerCase(); 
}
for(var i in keywords){
  if(words.indexOf(keywords[i].toLowerCase()) != -1){
    Logger.log('Match found for ' + keywords[i]);
    break;
  }
}

感谢this post分割多个分隔符

答案 3 :(得分:0)

如果使用对象存储关键字而不是数组,则此代码将更加高效。

var text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
var keywords = {"lorem" : 1, "sit": 1, "elit" : 1, "sed do" : 1};
var words = text.split(/[\s,]+/); //Add all other delimiters you want to include. 
for(var i in words) { 
   if (keywords[words[i].toLowerCase()]) { 
     Logger.log('Match found for ' + keywords[i]);
     break;
  }
}