indexOf在JavaScript中不起作用

indexOf在JavaScript中不起作用,javascript,replace,indexof,Javascript,Replace,Indexof,我正在检查JAVASCRIPT中字符串的索引。这是假的。其中,值确实属于它,如下所示: if(idOfControl.indexOf(idOfButton)) == is giving false for the below values. idOfControl = "dlInventory_btnEditComment_0" idOfButton = "dlInventory_btnEditComment" 但是如果我运行idOfControl.replace(idOfButto

我正在检查JAVASCRIPT中字符串的索引。这是假的。其中,值确实属于它,如下所示:

if(idOfControl.indexOf(idOfButton))  == is giving false for the below values.

idOfControl  = "dlInventory_btnEditComment_0"
idOfButton   = "dlInventory_btnEditComment"
但是如果我运行
idOfControl.replace(idOfButton,”)它正在工作并替换文本


如果在
0
位置找到字符串,则任何原因?

indexOf
也可以返回0<代码>0
的计算结果为
false
。尝试:

if(idOfControl.indexOf(idOfButton) > -1)

更多信息

如果在
0
位置找到字符串,indexOf
也可以返回0<代码>0的计算结果为
false
。尝试:

if(idOfControl.indexOf(idOfButton) > -1)

更多信息

有以下三大选择:

indexOf>-1
indexOf
的结果可以是
0
,这意味着字符串位于字符串的开头。未找到字符串时,返回值为
-1
,因此:

if (idOfControl.indexOf(idOfButton) > -1) {
    // Do something
}
如果@paxdiablo评论道:

if (idOfControl.indexOf(idOfButton) >= 0) {
    // Do something
}
通过正则表达式 您可以使用一个非常简单的正则表达式来测试匹配

var idOfControl  = "dlInventory_btnEditComment_0"
var control = /dlInventory_btnEditComment/;

if (idOfControl.test(control)) {
    // do something
}
可以增强此方法以捕获字符串的最后一个数字(如果需要)

您可以在这里尝试:

通过indexOf以一种骇人的方式 当位置为
时,使用位运算符返回真实值=-1
(在二的补码表示法中,
-1
在内部表示为
111…111
,其反转为
000…000
,即
0
,即假值)。事实上,它比>-1选项更有效,但更难阅读和理解。(编辑:这变得如此流行,你可以说它是一个标准)


有以下三大选择:

indexOf>-1
indexOf
的结果可以是
0
,这意味着字符串位于字符串的开头。未找到字符串时,返回值为
-1
,因此:

if (idOfControl.indexOf(idOfButton) > -1) {
    // Do something
}
如果@paxdiablo评论道:

if (idOfControl.indexOf(idOfButton) >= 0) {
    // Do something
}
通过正则表达式 您可以使用一个非常简单的正则表达式来测试匹配

var idOfControl  = "dlInventory_btnEditComment_0"
var control = /dlInventory_btnEditComment/;

if (idOfControl.test(control)) {
    // do something
}
可以增强此方法以捕获字符串的最后一个数字(如果需要)

您可以在这里尝试:

通过indexOf以一种骇人的方式 当位置为
时,使用位运算符返回真实值=-1
(在二的补码表示法中,
-1
在内部表示为
111…111
,其反转为
000…000
,即
0
,即假值)。事实上,它比>-1选项更有效,但更难阅读和理解。(编辑:这变得如此流行,你可以说它是一个标准)


IndexOf返回字符串的索引,如果找到,else返回-1另一个选项是使用类似正则表达式的
control=/dlInventory\u btnEditComment/
,然后使用
if(idOfControl.test(control)){…}
它不是
false,而是
falsy
。这是一个很大的区别。IndexOf返回字符串的索引,如果找到,else返回-1另一个选项是使用正则表达式,如
control=/dlInventory\u btnEditComment/
,然后
if(idOfControl.test(control)){…}
它不是
false
,而是
falsy
。这是一个很大的区别。或者
=0
,这对我来说更自然。或者如果你想要效率,
如果(~idOfControl.indexOf(idOfButton)){…}
。然而,这更难理解。我不在严肃的代码中使用它。@paxdiablo
=0
vs
-1
,一场激动人心的辩论:D@wared,我不想发动一场宗教战争。我只是说,给出的代码似乎等同于英文“如果这不是无效值”。使用
=0
将其转换为“如果这是一个有效值”。诚然,这种差异可以被视为无关紧要,但我有时会对英语和编程中的双重否定表示怀疑:-@paxdiablo我只是想指出这是一个观点问题。和平:)或
=0
这对我来说似乎更自然。或者如果你想要效率,
如果(~idOfControl.indexOf(idOfButton)){…}
。然而,这更难理解。我不在严肃的代码中使用它。@paxdiablo
=0
vs
-1
,一场激动人心的辩论:D@wared,我不想发动一场宗教战争。我只是说,给出的代码似乎等同于英文“如果这不是无效值”。使用
=0
将其转换为“如果这是一个有效值”。诚然,这种差异可以被视为无关紧要,但我有时会对英语和编程中的双重否定表示怀疑:-@paxdiablo我只是想指出这是一个观点问题。和平:)