请问最好的方法是检查某些文字句子是否包含一些关键字,并且可能有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它的谷歌脚本,也许有一些我没看到的功能:\提前致谢
答案 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;
}
}