使用indexOF()javascript测试子字符串

时间:2013-12-29 20:18:17

标签: javascript string indexof

我正在尝试使用indexOf()检查子字符串。当测试的字符串存在时,它应该返回true,否则返回false。出于某种原因,我的代码总是返回true?

为什么这段代码不起作用,怎么修复?

function checkSpam(str) {

if(str == str.indexOf('yyy') || str.indexOf('xxx')) {
    return true;
}

return false;
}

2 个答案:

答案 0 :(得分:0)

Javascript的indexOf()返回一个数字,而不是字符串,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf

你应该是:

if(-1 != str.indexOf('yyy') || -1 != str.indexOf('xxx')) {
 return true;
}

答案 1 :(得分:0)

它并不总是true

您的条件由两部分组成。除非str == str.indexOf('yyy')的值为str,否则第一部分"-1"将始终为false。第二部分str.indexOf('xxx')将始终评估为true,除非字符串以xxx开头,因为indexOf调用的结果将为零。

因此,如果str"-1"或者不是xxx,则结果为true

如果您想检查字符串是否包含xxxyyy,您应该在条件的两个部分检查indexOf的结果:

if (str.indexOf('yyy') != -1 || str.indexOf('xxx') != -1) {