我正在检查JAVASCRIPT中的字符串索引。这是假的。值的确如下所示:
if(idOfControl.indexOf(idOfButton)) == is giving false for the below values.
idOfControl = "dlInventory_btnEditComment_0"
idOfButton = "dlInventory_btnEditComment"
但如果我运行idOfControl.replace(idOfButton, "");
它正在运行并替换文本。
这有什么原因吗?
答案 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
的结果可以是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/
当位置为!=-1
时,它使用按位运算符返回真值(在二进制补码表示法中,-1
在内部表示为111...111
,其反转为{{1这是000...000
,即一个虚假的值)。它实际上比> -1选项更有效,但它更难阅读和理解。 (编辑:这变得如此受欢迎,你可以说它是一个标准)
0