2010-07-20 51 views
2

我在做一個非常基本的字符串匹配測試如下星號(*):JavaScript中,字符串:測試字符串子串的存在,其中包括

if(msList.indexOf(textChoice) != -1) 

這行之有效除了偶爾我正在查找的子字符串(textChoice)以星號結尾。然後我最終得到錯誤的匹配,因爲字符串中的星號被解釋爲運算符,而不是字符串中的字符。

那麼我該如何做這個測試,以便子字符串中的任何星號都被當作普通字符處理?

PS。我知道簡單的答案是「不要在你的子字符串中包含星號」,但他們在我正在處理的數據中 - 我無法擺脫它們。

+3

你能張貼不工作的代碼的例子嗎?無論如何,'indexOf'函數總是應該將星號視爲常規字符。 – LukeH 2010-07-20 22:56:16

+0

謝謝,我想我錯誤地診斷了這個問題。解決它另一種方式。不過謝謝! – monotasker 2010-07-20 23:45:34

回答

3

子字符串中的所有字符將被視爲常規字符。 *不是一個特殊的操作符,不會以任何方式更改indexOf的行爲。此外,indexOf方法不應該返回false。這將返回:

  • -1如果沒有找到匹配或
  • 開始匹配子字符串的索引,如果發現

注意,起始索引可以0這並不等同於虛假的子字符串搜索。這只是表示在字符串的開始處找到了子字符串。

"ABC".indexOf("AB") // 0 

將明確檢查返回值與-1,而不是隻檢查一個truthy值進行比較。

if("ABC".indexOf("AB")) { 
    // will never execute 
} 

相反,總是這樣做:

if("ABC".indexOf("AB") != -1) { 
    // .. 
} 
+0

謝謝。我想我誤解了問題所在。我能夠以另一種方式解決它。不過,我感謝你的幫助。它讓我回到了正確的軌道上。 – monotasker 2010-07-20 23:46:45

相關問題