我想检查字符串中是否存在单词。我尝试使用search()
函数,但它也计算包含搜索词的单词。例如,让我的字符串
var str = "This is a pencil.";
当我搜索“是”
时str.search("is");
给2,而我想得到1应该只是“是”,而不是“这”。 我怎样才能做到这一点?
提前致谢...
答案 0 :(得分:2)
search()采用正则表达式,因此您可以搜索由空格包围的is
alert(str.search(/\sis\s/))
答案 1 :(得分:2)
好吧,您似乎想要搜索整个单词,而不是字符串。
这是一种应该足够的方法(虽然不是全面的)。
根据空格或标点符号将字符串拆分为标记,这应该会为您提供单词列表(包含一些可能的空字符串)。
现在,如果要检查此单词列表中是否存在所需单词,可以使用列表中的includes
方法。
console.log(
"This is a pencil."
.split(/\s+|\./) // split words based on whitespace or a '.'
.includes('is') // check if words exists in the list of words
)
如果要计算特定单词的出现次数,可以过滤此列表以查找所需单词。现在你只需要使用这个列表的长度,你就会得到计数。
console.log(
"This is a pencil."
.split(/\s+|\./) // split words based on whitespace or a '.'
.filter(word => word === 'is')
.length
)
此方法还应处理字符串开头或结尾的单词。
console.log(
"This is a pencil."
.split(/\s+|\./) // split words based on whitespace or a '.'
.filter(word => word === 'This')
.length
)
或者,您也可以将单词列表缩减为出现次数
console.log(
"This is a pencil."
.split(/\s+|\./) // split words based on whitespace or a '.'
.reduce((count, word) => word === 'is' ? count + 1 : count, 0)
)
答案 2 :(得分:0)
您仍然可以使用.search()
或.indexOf()
来查找字词。寻找"是"在"这是一支铅笔。"例子只需要str.search(" is ")
(注意单词前后的空格)。