如何判断字符串中是否包含选中的关键字?
例如
var keywords = 'small, big, large'
var string = 'big brown bear';
function wordInString(string, keywords){
return new RegExp( '\\b' + keywords + '\\b', 'i').test(string);
}
以上仅适用于单个单词,我需要能够测试多个单词,以及完全匹配。
最佳答案
将字符串拆分为单词,并使用关键字数组
function wordInString(string, keywords) {
return string.split(/\b/).some(Array.prototype.includes.bind(keywords));
}
var keywords = ['small', 'big', 'large'];
var result1 = wordInString('big brown bear', keywords); // true
var result2 = wordInString('great brown bear', keywords); // false
var result3 = wordInString('Big brown bear', keywords); // false
console.log(result1, result2, result3);
ES5(跨浏览器)版本
function wordInString(string, keywords) {
return string.split(/\b/).filter(function(w) {
return keywords.indexOf(w) !== -1;
}).length > 0;
}
返回所有单词
function wordInString(string, keywords) {
return keywords.filter(function(x) { return this.includes(x) }, string.split(/\b/));
}
var keywords = ['small', 'big', 'large'];
var result1 = wordInString('big brown bear large', keywords); // ["big", "large"]
var result2 = wordInString('great brown bear', keywords); // []
var result3 = wordInString('Big brown bear', keywords); // []
console.log(result1);
console.log(result2);
console.log(result3);
返回第一个匹配的词或空字符串
function wordInString(string, keywords) {
var r = "";
string.split(/\b/).some( x => {
return r = keywords.includes(x) ? x : "";
})
return r;
}
var keywords = ['small', 'big', 'large'];
var result1 = wordInString('big brown bear large', keywords); // "big"
var result2 = wordInString('great brown bear', keywords); // ""
var result3 = wordInString('Big brown bear', keywords); // ""
console.log(result1);
console.log(result2);
console.log(result3);
关于JavaScript/jQuery - 检查字符串是否包含关键字之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068267/