Javascript,字符串:测试字符串是否存在包含星号 (*) 的子字符串

问题描述 投票:0回答:1

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

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

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

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

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

javascript indexof
1个回答
3
投票

子字符串中的所有字符都将被视为常规字符。

*
不是特殊运算符,不会以任何方式改变
indexOf
的行为。此外,
indexOf
方法永远不应该返回
false
。它将返回:

  • -1
    如果未找到匹配项或
  • 如果找到匹配子字符串的起始索引

请注意,起始索引可以是

0
,这对于子字符串搜索来说并不等于 false。这只是意味着在字符串的开头找到了子字符串。

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

进行显式检查,将返回值与

-1
进行比较,而不仅仅是检查真实值。

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

相反,请始终这样做:

if("ABC".indexOf("AB") != -1) {
   // ..
}
© www.soinside.com 2019 - 2024. All rights reserved.