如果JavaScript中的函数内有Else Conditionals

时间:2013-11-09 15:34:22

标签: javascript

我遇到了条件问题。我想返回模式以字符串开头的索引(如果未找到,则返回-1)。如果第3个参数为true,则搜索区分大小写,否则不区分大小写。

Examples
index("abAB12","AB",true) returns 2 but index("abAB12","AB",false) returns 0
index("abAB12","BA",true) returns -1 and index("abAB12","BA",false) returns 1

知道我怎么能做到这一点吗?

这是我目前的代码

var s = "abAB12"
var p = "AB"
var cs = true

    function index(string, pattern, caseSensitive) {

        if (pattern) {

            var found = false;

            if (caseSensitive = false) {
                if (string.indexOf(pattern.) >= 0) {
                    found = true;
                }
                return (found);
                else {
                    return ("");
                }
            } else if (caseSensitive = true) {
                if (string.toLowerCase().indexOf(pattern.toLowerCase()) >= 0) {
                    found = true;
                }
                return (found);
            } else {
                return ("");
            }
        }

    }

alert(index(s, p, cs));

http://jsfiddle.net/AfDFb/1/

处小提琴

5 个答案:

答案 0 :(得分:2)

您可以将string.search()与正则表达式一起使用来完成此操作:

function index(input, key, caseMatters) {
    return input.search(new RegExp(key, caseMatters ? '' : 'i'));
}

现在你可以:

index("abAB12","AB",true); // returns 2
index("abAB12","AB",false); // returns 0
index("abAB12","BA",true); // returns -1
index("abAB12","BA",false); // returns 1

答案 1 :(得分:2)

您的代码中有一些错误类型。在第15行你有

}
return (found);
else {

这不是无效的。将其更改为

return (found);
}
else {

还有另一个。

if (caseSensitive = false) {

=用于作业。比较时,您需要在if语句中使用==。 同样在第13行,在模式之后还有一个额外的.。删除它。

if (string.indexOf(pattern.) >= 0) {

Your fiddle example

答案 2 :(得分:0)

如果是条件而不是比较它,则在内部分配值。

尝试

 if (caseSensitive == false) {

 if(caseSensitive == true)

答案 3 :(得分:0)

您需要在==语句中使用双等号if, else

if(caseSensitive == false)

并且

if(caseSensitive == true)

答案 4 :(得分:0)

您最好使用search

'abAB12'.search(/AB/); // 2
'abAB12'.search(/AB/i); // 0
'abAB12'.search(/BA/); // -1
'abAB12'.search(/BA/i); // 1

i标志表示“案例i nsensitive”(insensibleàlacasse:D)。