Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript,string:测试是否存在包含星号(*)的子字符串_Javascript_String_Testing_Asterisk_Indexof - Fatal编程技术网

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
函数应该始终将星号视为常规字符。谢谢,我想我错诊断了这个问题。用另一种方法解决它。不过,谢谢!谢谢我想我误解了问题所在。我能用另一种方法解决它。不过,我很感谢你的帮助。这使我回到了正确的轨道上。