【问题标题】:Contain word from whole string in javascript [closed]在javascript中包含整个字符串中的单词[关闭]
【发布时间】:2018-11-23 08:06:48
【问题描述】:

我需要比较 jQuery 中字符串中的单词。简而言之,每个单词都在字符串中,那么匹配应该为真,否则不是。什么顺序都无所谓。

例如,如果我有句子:I need to Visit W3Schools

如果我搜索 need w3school ==> 匹配
如果我搜索 need go w3school ==> 不匹配
如果我搜索 w3schools visit ==> 匹配
如果我搜索 need go ==> 不匹配

可以是多个单词,例如 1、2 或超过 2。

我用过

var keyword = "I need to Visit W3Schools";

if(keyword.indexOf('need w3school') != -1){
   console.log('Found');
}else{
    console.log('Not Found');
}

但它只适用于后续单词而不是其他情况“w3schools visit”。

【问题讨论】:

  • 如果用户没有在单词之间放置空格怎么办??
  • 首先,请展示您为自己解决此问题而编写的代码。请记住,我们在这里帮助您调试现有代码的问题,而不是为您编写代码。其次,我知道你只是顺便提到了它们,但不要使用 W3Schools。他们的文章经常过时,有时甚至完全是错误的。 MDN 是 HTML、JS 和 CSS 的更好资源。
  • 纯代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定编程问题有关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。
  • 这是一个逻辑 javascipt 问题,不是一个 jQuery 问题。
  • 区分大小写重要吗?

标签: javascript jquery


【解决方案1】:
//Function CheckForWords accepts the text value
//Splits text value on whitespace, iterates each word,
//Checks if each word is found in text, if not returns false
function CheckForWords(text){
   const words = text.split(' ');

   for(let x = 0; x < words.length; x++){
        if(text.toLowerCase().indexOf(words[x].toLowerCase()) === -1){
            return false;
        }
   }

   return true;
}

【讨论】:

    猜你喜欢
    • 2013-11-07
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2016-04-21
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多