indexOf无法在JavaScript中运行

时间:2013-11-19 07:31:17

标签: javascript replace indexof

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

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

idOfControl  = "dlInventory_btnEditComment_0"
idOfButton   = "dlInventory_btnEditComment"

但如果我运行idOfControl.replace(idOfButton, "");它正在运行并替换文本。

这有什么原因吗?

2 个答案:

答案 0 :(得分:5)

如果您在indexOf位置找到字符串,

0也可以返回0。 0评估为false。尝试:

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

更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

答案 1 :(得分:3)

有以下三大选择:

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
}

可以增强此方法以捕获字符串的最后一个数字(如果需要)

var idOfControl  = "dlInventory_btnEditComment_0"
var control = /dlInventory_btnEditComment_(\d+)/;

var match = control.exec(idOfControl);

if (match) {
    alert('the number found is: ' + match[1]);
}

您可以在此处试用:http://jsfiddle.net/4Z9UC/

以hacky方式通过indexOf

当位置为!=-1时,它使用按位运算符返回真值(在二进制补码表示法中,-1在内部表示为111...111,其反转为{{1这是000...000,即一个虚假的值)。它实际上比> -1选项更有效,但它更难阅读和理解。 (编辑:这变得如此受欢迎,你可以说它是一个标准)

0