JavaScript检查一些文本中的多个关键字?

JavaScript检查一些文本中的多个关键字?,javascript,google-apps-script,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"]; 现在,什么是检查任何关键字

请问,什么是最好的方式来检查一些文本句子是否提供了一些关键字,可能有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"];
现在,什么是检查任何关键字是否在文本中的最好和最快的方法,但就像整个单词不是单词的一部分一样,并且它的不区分大小写

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


提前感谢(var i=0;i
for(var i=0;i在这些行中尝试一些东西

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

如果使用对象而不是数组来存储关键字,那么这段代码的效率将大大提高

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

你的脚本很好,但你忘记了:
“\\b”+关键字[i]+“\\b”
来匹配整个单词。我没有忘记,我是故意这么做的,因为我认为他也愿意匹配
abcde
中的
abc
。但这仍然没有错,至少可以给他一个开始的路径。我知道没有错:)但他想搜索并匹配他在问题中提到的整个单词。要编辑。很抱歉我注意力不集中,老板到处走动,很难回答问题。谢谢提醒。:)你的脚本很好,但你忘记了这一点:
“\\b”+关键字[I]+“\\b”
匹配整个单词。我没有忘记,我故意这么做,因为我认为他也愿意在
abcde
中匹配
abc
。但它仍然没有错,至少可以给他一个开始路径。我知道它没有错:)但他想搜索并匹配他在问题中提到的整个单词。要编辑。很抱歉我注意力不集中,老板到处走动,很难回答问题。谢谢你的提醒。:)修复语法错误
var-keywords=[“lorem”,“etc…”和
if(words.indexOf(keywords[i].toLowerCase())!=-1){
修复语法错误。
var-keywords=[“lorem”,“etc…”和
if(words.indexOf(keywords[i].toLowerCase())!=-1){