原⽣JS实现字符串的indexOf原生js和js的区别
礼拜三,⽼师留了⼀道有意思的练习题: 原⽣JS实现ndexOf。在⽹上搜索了⼀下,答案都不太对,所以⾃⼰写了⼀下
乍看⼀下,⼗分简单,但是要知道,indexOf是可以查询多位数的⼦串在⽗串中的位置,⽽且还能制定起始位置。多位数中还可能有特殊字符,例如空格,下划线等。做⼀个字符在字符串的位置很简单,那么多个呢,特殊字符呢,还有⼤⼩写可不是同⼀个字符。
现在,我们来写⼀下这个函数
function MyIndexOf(str2,str1,n){//n为起始位置
let i;//循环变量
let len1=str1.length;//⼦串长度
let len2=str2.length;//⽗串长度
if(n==undefined ||n==null||n<=-1) {//没有传⼊起始位置时,从第⼀位开始
i=0;
}else if(n>len2-1){//如果起始位置⼤于字符串最后⼀位,返回-1,不存在
return -1;
}else{//如果不存在上述2种情况,从第n位开始
i=n;
}
if(len1>len2){//如果⼦串长⼤于⽗串,那么肯定不存在,返回-1
return -1;
}else if(len1==len2){//如果相等,就对⽐2个字符串的内容
if(str1==str2){//如果内容相等,那么就是从第⼀位开始,返回0
return 0;
}else{//长度相等,内容不相等,那么肯定不存在啦
return -1;
}
}else{
let str21='';
while(i<len2){
//拼合对⽐的⽗串,i到len1
str21=str2.substr(i,len1);//每次都拿出和⼦串长度⼀样的字符串去对⽐
if(str21==str1){
return i;//这⾥返回的就是第⼀次⼦串出现的位置,符合indexOf
}
i++;
}
if(i==len2){//如果循环到⽗串最后⼀位还是没有出现相等,那么就是-1不存在
return -1;
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论