我检查在JavaScript字符串的索引。 这就要为假。 其中,作为值不属于它的,如下:
if(idOfControl.indexOf(idOfButton)) == is giving false for the below values.
idOfControl = "dlInventory_btnEditComment_0"
idOfButton = "dlInventory_btnEditComment"
但是,如果我跑idOfControl.replace(idOfButton, "");
这是工作和更换的文字。
什么理由呢?
indexOf
也可以返回0,在您的字符串的情况下,在该位置被发现的0
。 0
计算结果为false
。 尝试:
if(idOfControl.indexOf(idOfButton) > -1)
更多信息 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf
有这三大选择:
的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...000
是0
,即一个falsy值)。 事实上,它是比> -1选项更有效,但它是难以阅读和理解。 (编辑:这变得如此受欢迎,你可以说这是一个标准)
if (~idOfControl.indexOf(idOfButton)) {
// do something
}