Javascript如何检查字符串中是否存在单词

时间:2017-05-16 19:38:39

标签: javascript

我想检查字符串中是否存在单词。我尝试使用search()函数,但它也计算包含搜索词的单词。例如,让我的字符串

var str = "This is a pencil.";

当我搜索“是”

str.search("is");

给2,而我想得到1应该只是“是”,而不是“这”。 我怎样才能做到这一点?

提前致谢...

3 个答案:

答案 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 ")(注意单词前后的空格)。