JavaScript检查某些文本中的许多关键字

JavaScript check many keywords in some text?

本文关键字:许多 关键字 文本 检查 JavaScript      更新时间:2023-09-26

请问,检查某些文本句子是否提供了某些关键字,并且可能有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"];

现在,检查是否有任何关键字在文本中,但像整个单词而不是单词的一部分,以及不区分大小写的,最好、最快的方法是什么?

顺便说一句,它的谷歌脚本,也许有一些功能我没有看到:''

提前感谢

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

在这些行中尝试一些东西。

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

感谢这篇文章在多个分隔符上进行拆分

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
    }
}

如果使用对象而不是数组来存储关键字,则此代码的效率会高得多。

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