的indexOf不能在JavaScript中工作(indexOf is not working in

2019-10-19 00:35发布

我检查在JavaScript字符串的索引。 这就要为假。 其中,作为值不属于它的,如下:

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

idOfControl  = "dlInventory_btnEditComment_0"
idOfButton   = "dlInventory_btnEditComment"

但是,如果我跑idOfControl.replace(idOfButton, ""); 这是工作和更换的文字。

什么理由呢?

Answer 1:

indexOf也可以返回0,在您的字符串的情况下,在该位置被发现的00计算结果为false 。 尝试:

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

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



Answer 2:

有这三大选择:

的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/

通过的indexOf在哈克的方式

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

if (~idOfControl.indexOf(idOfButton)) {
    // do something
}


文章来源: indexOf is not working in JavaScript