Javascript,string:包含星号(*)的子字符串的测试字符串

时间:2010-07-20 22:49:40

标签: javascript string testing asterisk indexof

我正在做一个非常基本的字符串匹配测试,如下所示:

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

这很好用除了偶尔我正在寻找的子字符串(textChoice)以星号结尾。然后我最终得到错误匹配,因为字符串中的星号被解释为运算符,而不是字符串中的字符。

那么如何进行此测试以便将子字符串中的任何星号视为常规字符?

PS。我知道简单的答案是“不要在你的子字符串中包含星号”,但它们在我正在使用的数据中 - 我无法摆脱它们。

1 个答案:

答案 0 :(得分:3)

子字符串中的所有字符都将被视为常规字符。 *不是特殊运算符,不会以任何方式更改indexOf的行为。此外,indexOf方法永远不应返回false。它将返回:

    如果找不到匹配项,则
  • -1
  • 匹配子字符串的起始索引(如果找到)

请注意,起始索引可以是0,对于子字符串搜索,它不等于false。它只是意味着在字符串的开头找到了子字符串。

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

使用显式检查将返回值与-1进行比较,而不仅仅是检查真值。

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

相反,总是这样做:

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