首页 > 试题广场 > 请实现javascript中的indexOf功能,判断一个字
[问答题]
请实现javascript中的indexOf功能,判断一个字符串a中是否包含另一个字符串b。
a)如果包含,需要返回匹配字符串b的位置
b)如果不包含,需要返回-1
如:indexOf("hello","el") return 1。
推荐

function indexOf(str,subStr){
 var _str= new String(str),_subStr=new String(subStr),result=-1,isEnd=false;
 if(str==subStr){ 
    result=0;
 }else{
 for(var i =0;i<_str.length;i++){
     if(!isEnd){
         for(var j =0;j<_subStr.length;j++){
            //console.log(i,j);
             if(_str[i+j]==_subStr[j]){
                 if(j+1==_subStr.length){
                     result = i;
                     isEnd=true;
                     break;
                 }
             }else{
                 break;
             }
         }
     }else{
         break;
     }
 }
 }
 return result;
 }

编辑于 2015-04-25 23:50:12 回复(1)
function indexOf(str,subStr){
     var result =str.match(subStr);
     return result ? result.index : -1;
}
发表于 2015-05-04 17:30:34 回复(0)
function indexOf(str,subStr){
 var result=-1;
 if(str==subStr){
 result=0;
 }else{
 var arr=str.split(subStr);
 if(arr.length>1){
 result=arr[0].length;
 }
 }
 return result;
}

编辑于 2015-02-06 14:41:24 回复(2)
function indexOf(a, b){
    return a.search(b);
}
发表于 2015-05-08 10:50:56 回复(0)
function indexOf(a, b) {
var len = b.length;
for (i = 0; i < a.length - len; i++) {
if (a.slice(i, i + len) == b) {
return 1;
}
}
return -1;
}
发表于 2015-03-30 21:13:35 回复(1)
function indexOf(a,b){
 var l = b.length;
 for(var i=0;i<a.length;i++){
  var s = a.substring(i,l+i);
  if(s==b){
   return i;
  }
 }
 return -1;
}
发表于 2015-02-26 11:53:09 回复(1)
function indexOf(a,b){
    return a.indexOf(b);
}
发表于 2015-07-31 14:55:54 回复(0)
var indexOf = function(string, target) {
    var len = string.length;
    var tLen = target.length;

    if (len < tLen) {
         return -1;
    }
    
    if (len === tLen) {
        return (string === target) ? 0 : -1;
    }

    for (var i = 0; i < len; i++) {
        if (string.substr(i, tLen) === target) {
            return i;
        }
    }
    
    return -1;
};

发表于 2015-05-22 16:13:23 回复(0)
构建indexOf方法:限制只传入字符串或数字
function indexOf(str,subStr){
 var arr = str.toString().split(subStr);
 return arr.length > 1 ? arr[0].length : -1;
}
console.log(indexOf("hello","elx"));
console.log(indexOf("","el"));
console.log(indexOf(1234,"4"));

编辑于 2015-06-25 17:39:30 回复(0)
function indexOf (a, b) {
    if (typeof a != "string") {
        return -1;
    }
    for (var i = 0, I = a.length; i < I; i++) {
        if (b == a[i]) {
            return i;
        }
    }
    return -1;
}
发表于 2015-05-05 12:27:00 回复(0)
function contain(str,substr){
    if(substr=='')return 0;
    for(var i=0;i<str.length;i++){
        if(str[i]==substr[0]){
            for(var j=1;j<substr.length;j++){
                if(str[i+j]!=substr[j])break;
            }
            if(j==substr.length)return i;
        }
    }
    return -1;
}

发表于 2015-05-05 01:33:39 回复(0)

function isContain(str1,str2){
        var i = str1.indexOf(str2);
        if(i != -1) {
            alert(i);
        } else {
            alert(-1);
        }      
    }
    isContain("hello","lol");

发表于 2015-04-27 17:23:44 回复(1)
function indexOf(str,substr){
substr=substr.replace(/[\(\)\{\}\[\]\*\.\^\$\+\?\|]/g,function(match){
switch(match){
case "(" : return "\\(";
                case "]" : return "\\]";
                case "[" : return "\\[";
                case "}" : return "\\}";
                case "{" : return "\\{";
                case ")" : return "\\)";
                case "^" : return "\\^";
                case "$" : return "\\$";
                case "|" : return "\\|";
                case "?" : return "\\?";
                case "*" : return "\\*";
                case "+" : return "\\+";
                case "." : return "\\.";
};
});
var pattern=new RegExp(substr,"g");
var result=pattern.exec(str);
return  result ? result.index : -1;
}
console.log(indexOf("[w/s[saadsadasd","/s[sa"));
编辑于 2015-04-16 13:22:18 回复(0)
function judgeStr(){
    var a = "hello";
    var b = "el";
    if(a.indexOf(b)>0){
        return a.indexOf(b);
    }else{
        return -1;
    }
}
发表于 2015-03-09 15:22:28 回复(0)
function IndexOf(a, b) {
            var testStr = b;
            var replaceData = {
                "(" : "\(",
                "[" : "\]",
                "{" : "\}",
                ")" : "\)",
                "^" : "\^",
                "$" : "\$",
                "|" : "\|",
                "?" : "\?",
                "*" : "\*",
                "+" : "\+",
                "." : "\.",
                "\\" : "\\\\"
            };
            
            for (var key in replaceData) {
                testStr = testStr.replace(key, replaceData[key]);
            }

            var pattern = new RegExp(testStr, "g");
            if (pattern.test(a)) {
                return pattern.lastIndex - b.length;
            } else {
                return -1;
            }
        }
        
        var a = "\"dfewffw";
        var b = "wf";
        IndexOf(a, b);
编辑于 2015-03-02 15:22:35 回复(0)
<script type="text/javascript">

//the fllowing code is used to test the functions below 
window.onload = function(){
   var t1 = contain("abc","bc");
   var t2 = contain("abc","a");
   var t3 = contain("abc","aa");
   print("t1",t1);
   print("t2",t2);
   print("t3",t3);
};

//function used to print a variable
function print(pname,p){
    document.write(pname+" = ");
    document.write(p);
    document.write("<br>");
}

//function used to check if str contains a substr
function contain(str,sub){
 var bol = false;  
 if(str){
     bol = (str.indexOf(sub)>-1) ? true: bol;
   }else{
     document.write("empty parameter: str");
   }
  return bol;
}
</script>
发表于 2015-02-19 13:47:33 回复(0)
function indexOf(str, target) {
    var index = str.indexOf(target)
    if(index>-1) {return index;}
    else {return -1;}
   
}

发表于 2015-01-31 03:28:26 回复(0)
function indexOf(str1,str2){
    if(str1.indexOf(str2)>0){
        return 1;
    }else{
        return -1;
    }
}
发表于 2015-01-11 01:09:46 回复(1)