2017-08-30 73 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

    請再看一遍! –

    相關問題