Javascript,string:测试是否存在包含星号(*)的子字符串
我正在做一个非常基本的字符串匹配测试,如下所示:Javascript,string:测试是否存在包含星号(*)的子字符串,javascript,string,testing,asterisk,indexof,Javascript,String,Testing,Asterisk,Indexof,我正在做一个非常基本的字符串匹配测试,如下所示: if(msList.indexOf(textChoice) != -1) 这很有效,只是偶尔我要查找的子字符串(textChoice)以星号结尾。然后我得到了错误的匹配,因为字符串中的星号被解释为运算符,而不是字符串中的字符 "ABC".indexOf("AB") // 0 那么,我如何做这个测试,以便子字符串中的任何星号都被视为常规字符 另外,我知道简单的答案是“不要在子字符串中包含星号”,但它们在我处理的数据中——我无法去除它们 子字符串
if(msList.indexOf(textChoice) != -1)
这很有效,只是偶尔我要查找的子字符串(textChoice)以星号结尾。然后我得到了错误的匹配,因为字符串中的星号被解释为运算符,而不是字符串中的字符
"ABC".indexOf("AB") // 0
那么,我如何做这个测试,以便子字符串中的任何星号都被视为常规字符
另外,我知道简单的答案是“不要在子字符串中包含星号”,但它们在我处理的数据中——我无法去除它们 子字符串中的所有字符都将被视为常规字符
*
不是特殊运算符,不会以任何方式更改indexOf
的行为。此外,indexOf
方法不应返回false
。它将返回:
如果未找到匹配项或-1
- 匹配子字符串的起始索引(如果找到)
0
,这对于子字符串搜索不等于false。这只意味着在字符串的开头找到了子字符串
"ABC".indexOf("AB") // 0
将返回值与-1
进行显式检查,而不仅仅是检查真实值
if("ABC".indexOf("AB")) {
// will never execute
}
相反,请始终这样做:
if("ABC".indexOf("AB") != -1) {
// ..
}
你能给出一个不起作用的代码示例吗?
indexOf
函数应该始终将星号视为常规字符。谢谢,我想我错诊断了这个问题。用另一种方法解决它。不过,谢谢!谢谢我想我误解了问题所在。我能用另一种方法解决它。不过,我很感谢你的帮助。这使我回到了正确的轨道上。