JavaScript,字符串 : test string for presence of sub-string that includes an asterisk (*)

标签 javascript string testing asterisk indexof

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

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

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

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

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

最佳答案

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

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

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

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

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

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

相反,请始终这样做:

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

关于JavaScript,字符串 : test string for presence of sub-string that includes an asterisk (*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3295001/

相关文章:

javascript - 使用工作箱运行时缓存,请求不会显示在 chrome 的缓存存储中

javascript - 在html表中获取倒数第二个 child td

c++ - "NUL"字符 ("\0") 字节是分开的还是分配给带有字符串的字符数组?

c - 如何在不使用指针的情况下将字符串分成两半

arrays - selenium ide循环遍历数组变量

android - 在 2 台设备上运行 android 仪器测试

javascript - jQuery 选项卡不起作用

javascript - 在IE11中,如何使用console.log?

python - 使用 Pandas 从数据框的所有项目中删除字符串

java - 是否有可能从 MyBatis MapperProxy 获取对象?