我正在尝试检查字符串是否包含特定单词,而不仅仅是子字符串。
以下是一些示例输入/输出:
var str = "This is a cool area!";
containsWord(str, "is"); // return true
containsWord(str, "are"); // return false
containsWord(str, "area"); // return true
以下功能无效,因为第二种情况也会返回true:
function containsWord(haystack, needle) {
return haystack.indexOf(needle) > -1;
}
这也不起作用,因为它在第三种情况下返回false:
function containsWord(haystack, needle) {
return (' ' +haystack+ ' ').indexOf(' ' +needle+ ' ') > -1;
}
如何检查字符串是否包含单词?
答案 0 :(得分:2)
$(function(){
function containsWord(haystack, needle) {
return haystack.replace(/[^a-zA-Z0-9 ]/gi, '').split(" ").indexOf(needle) > -1;
}
var str = "This is a cool area!";
console.log(containsWord(str, "is")); // return true
console.log(containsWord(str, "are")); // return false
console.log(containsWord(str, "area"));
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:2)
您可以删除所有特殊字符,然后将字符串与空格分开以获取单词列表。现在只需检查id searchValue是否在此单词列表中
function containsWord(str, searchValue){
str = str.replace(/[^a-z0-9 ]/gi, '');
var words = str.split(/ /g);
return words.indexOf(searchValue) > -1
}
var str = "This is a cool area!";
console.log(containsWord(str, "is")); // return true
console.log(containsWord(str, "are")); // return false
console.log(containsWord(str, "area")); // return true
&#13;
答案 2 :(得分:2)
尝试使用正则表达式,其中\b
元字符用于在单词的开头或结尾找到匹配项。
var str = "This is a cool area!";
function containsWord(str, word) {
return str.match(new RegExp("\\b" + word + "\\b")) != null;
}
console.info(containsWord(str, "is")); // return true
console.info(containsWord(str, "are")); // return false
console.info(containsWord(str, "area")); // return true