2017-08-30 54 views
-1

我熟悉寻找一个给定的子字符串:如何在javascript中的字符串中搜索一个单词(不只是一个子字符串)?

if (string.indexOf(substring) > -1) { 
    var containsSubstring = true; 
} 

但是,如果子字符串必须一个字

一个字:

  • 它必须与后一个空格字符串的开头;或
  • 在字符串的末尾加上一个空格;或
  • 在字符串中间两边各有

空间

  • 如果我要找的子串fox

    the quick brown fox // matches 
    fox jumps over the lazy dog // matches 
    quick brown fox jumps over // matches 
    
    
    the quick brownfox // does not match 
    foxjumps over the lazy dog // does not match 
    quick brownfox jumps over // does not match 
    quick brown foxjumps over // does not match 
    quick brownfoxjumps over // does not match 
    

    有什么办法来实现上述结果与indexOf或将我需要使用正则表达式?

  • +2

    是什么子,并在这方面,一个字有什么区别? – Y2H

    +0

    你有没有考虑过使用正则表达式?或者jQuery – evolutionxbox

    +0

    正则表达式可能是最干净的,但是如果你检查所有的编码,使用空格会有效 –

    回答

    1

    您是否尝试过使用正则表达式用字边界:

    if (/(\bfox\b)/g.test(substring)) { 
        var containsSubstring = true; 
    } 
    

    https://regex101.com/r/G3iOGi/1

    +0

    @Rounin如果这是正确的答案,你可以标记它,我需要声望:) – combatc2

    +0

    优秀的工作,@ combatc2 - 谢谢你。我已经离开了我的笔记本电脑,否则我会更早地标记它。 – Rounin

    +0

    我已经通过将正则表达式放在它自己的变量中分开了它:'var pattern =/\ bfox \ b/g; var string ='thequickbrown fox'; console.log(pattern.test(string));''.test()'是完美的,因为它返回一个布尔值而不需要if语句 - 再次感谢。 – Rounin

    0

    您可以通过检查实现这一目标,如果它是一个字符串的开始和之后有一个空格,或者是在字符串的结束,之前有一个空格,或者是在字符串的中间,有一个之前和之后的空间。

    +0

    谢谢弗兰克。是的,我明白我需要做什么。我只是不明白我如何使用'indexOf()'来实现这一点。 – Rounin

    +0

    所以...事实证明,虽然'indexOf()'对于普通的子字符串很好,'search()'是用于正则表达式的方法。尽管如此,在这个特定的例子中,@ combatc2提到的'test()'方法是最好的解决方案。 – Rounin

    1

    您可以使用search方法。

    var string = "foxs sas" 
     
    
     
    var search = string.search(/\bfox\b/) >= 0? true : false; 
     
    
     
    console.log(search)

    +0

    不是。上面的方法每次在字符串中存在子字符串“fox”时都会返回“true”,即使子字符串“fox”不是一个字。例如'brownfox jumps'和'brown foxjumps'和'brownfoxjumps'都会返回true。 – Rounin

    +0

    请再看一遍! –

    相关问题