检查句子是否包含短语

时间:2016-12-03 14:54:28

标签: javascript search indexof

句:

  1. 嘿结帐Hello World< - 应该包括
  2. 你好世界很好! < - 应该包括
  3. Hhello World不应该工作< - 不应该包括
  4. 这也是Hhhello世界< - 不应该包括
  5. var phraseToSearch = "Hello World";

    请注意: sentence.ToLower().IndexOf(phraseToSearch.ToLower())无效,因为它会包含上述所有句子,而结果应仅包含句子1和2

2 个答案:

答案 0 :(得分:3)

您可以使用正则表达式将字符模式与字符串匹配。

正则表达式只是使用Hello World字边框并使用\b不区分大小写的修饰符来查找i您要查找的确切字母。

Regex有一个方法test,它将在给定的字符串上运行正则表达式。如果正则表达式匹配,它将返回true。

const phraseToSearch = /\bhello world\b/i

const str1 = 'Hey checkout Hello World'
const str2 = 'hello world is nice!'
const str3 = 'Hhello World should not work'
const str4 = 'This too Hhhello World'

console.log(
  phraseToSearch.test(str1),
  phraseToSearch.test(str2), 
  phraseToSearch.test(str3), 
  phraseToSearch.test(str4)
)

答案 1 :(得分:1)

您可能想要使用正则表达式。以下是您要匹配的内容

  • Text(周围有空格)
  • ... Text(一边是空格,另一边是文字的末尾)
  • Text ...(一边是空格,另一边是边开始)
  • Text(只是字符串,单独使用)

一种方法,没有正则表达式,只需要放置4个条件(上面每个项目符号点一个)并使用&&加入它们,但这会导致代码混乱。

另一个选择是将两个字符串拆分为空格,并检查一个数组是否是另一个数组的子数组。

但是,我的解决方案使用正则表达式 - 这是一种可以在字符串上测试的模式。

我们的模式

  • 寻找空格/字符串开头
  • 检查字符串
  • 寻找字符串的空格/结尾
根据{{​​3}},

\b将匹配空格,单词的分隔符和字符串的结尾。这些东西被称为单词边界。

以下是代码:

function doesContain(str, query){ // is query in str
    return new RegExp("\b" + query + "\b", "i").test(str)
}

i使匹配大小写不敏感。