JavaScript: 在字符串中查找单词。

14
Javascript里是否有一个内置函数可以判断一个字符串中是否包含某个单词?我不是在找类似于indexOf()这样的东西,而是:
find_word('test', 'this is a test.') -> true
find_word('test', 'this is a test') -> true
find_word('test', 'I am testing this out') -> false
find_word('test', 'test this out please') -> true
find_word('test', 'attest to that if you would') -> false

基本上,我想知道我的单词是否出现在文本中,但不是作为另一个单词的一部分。手动实现并不太困难,但我想问一下是否已经有内置函数可以做到这一点,因为它似乎是经常出现的需求。


2
@JeremyJStarcher,你看到问题了吗? - Mala
实际上,是的,我看到了一个错误的地方,因为它是“testing”,这就是区别所在。但是你的问题读起来像是“我不喜欢indexOf()的语法,我可以用什么代替”而不是真正解释indexOf()不能做我想要的事情,因为...解释。 - CaffGeek
@Mala 是的,我做了。链接的答案简要地讨论了正则表达式。 - Jeremy J Starcher
1
@JeremyJStarcher 这位提问者问的是一个根本不同的问题,浏览了下回答,我没有看到任何一个能够回答上述问题的答案。如果我漏看了什么,请谅解。 - Mala
3个回答

25
您可以使用splitsome:
function findWord(word, str) {
  return str.split(' ').some(function(w){return w === word})
}

或者使用带有单词边界的正则表达式:

function findWord(word, str) {
  return RegExp('\\b'+ word +'\\b').test(str)
}

1
前者无法正确处理标点符号,但后者看起来是我需要的。谢谢! - Mala
жҲ‘жғіиҰҒ让第дёҖдёӘе·ҘдҪңпјҢеҸҜд»ҘдҪҝз”Ё.split(/\s*\b\s*/)пјҢеҰӮhttp://stackoverflow.com/questions/24718348/how-to-parse-string-into-words-and-punctuation-marks-using-javascriptжүҖиҝ°гҖӮжҲ‘дёҚзҹҘйҒ“.some()еҮҪж•°пјҢжүҖд»Ҙж„ҹи°ўжӮЁж•ҷз»ҷжҲ‘ :) - Mala
这两个函数并不相等。在第一个情况下,findWord('test', 'test-team')将返回false,而在第二个情况下将返回true。第一个应该使用\b进行分割,或者第二个使用' '。对于大字符串来说,第二个可能会更快。 - RobG

4
JavaScript的includes()方法用于判断一个字符串是否包含特定字符串中的字符。如果包含,则返回true,否则返回false。
语法:
string.includes(searchvalue, start)

参数值:

参数           描述
searchvalue    必需。要搜索的字符串。
start          可选。默认为0。搜索开始的位置。

示例:

const sentence = 'The quick brown fox jumps over the lazy dog.';
const word = 'fox';
console.log(`The word "${word}" ${sentence.includes(word) ? 'is' : 'is not'} in the sentence`);


-1
现代浏览器支持Array.prototype.includes()方法,该方法用于确定数组中是否包含某个特定值,并返回相应的truefalse
以下是一个示例:

const ShoppingList = ["Milk", "Butter", "Sugar"];

console.log(`Milk ${ShoppingList.includes("Milk") ? "is" : "is not"} in the shopping list.`);

console.log(`Eggs ${ShoppingList.includes("Eggs") ? "is" : "is not"} in the shopping list.`)


请重新表达您的答案,避免出现拼写错误。 - Algo7
包括一个指向 includes 方法的链接,以及一个使用示例。 - smac89

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接