str.indexOf(s)===> 找 s 字符串在 str里面的索引
比如,str = "zhangzq"; s = "z";
那么 str.indexOf(s) = 0
那么我想知道第二个 s 的索引,就得,
str = str.substring( str.indexOf(s)+1 ) ==> "hangzq";
str.indexOf(s) = 4;
那么索引就是: 0+4+1 == 5;
那么,字符串要是多了,我找第八个,就很不好找了,或者找的个数不定,所以我就写了个方法,此处记录一下。
直接上代码吧,看注释。
/**
* 索引 0 开始
* @param oldstr 原始字符串
* @param str 需要切割的字符串
* @param i 索引,0开始
* @returns {*} 返回 str 在 oldstr 里面的 第 i 个 的位置
*/
function indexOf(oldstr , str , i) {
var strIndex = oldstr.indexOf(str);
var index = 0;
if(i==0){
return strIndex
}else{
index++;
return indexOfAcl( oldstr.substring(strIndex+1) , str ,i, index ,strIndex);
}
}
/**
*
* @param oldstr 原始字符串
* @param str 需要截取的字符串
* @param i 需要截取的位数,索引0 开始
* @param index 当前位数
* @param total 第i个str 在 oldstr 里面的索引
* @returns {*}
*/
function indexOfAcl(oldstr,str,i,index,total) {
if( i == index ){
return total + oldstr.indexOf(str) +1;
}else{
indexOld = oldstr.indexOf(str) +1
total += indexOld;
index++;
return indexOfAcl(oldstr.substring(indexOld),str,i,index,total);
}
}
运行效果: