今天自己用 split()方法实现了统计某字符在字符串中出现的次数,顺便又百度了一下,看看有没有其它方法,结果看到下面这段函数,但其中的count++; offset += subStr.length;
有点看不明白是什么意思,请路过的前辈解惑!
function countInstances (mainStr, subStr) {
var count = 0;
var offset = 0;
do{
offset = mainStr.indexOf(subStr, offset); // 通过indexOf获得某字符在字符串中出现的位置
if( offset != -1 ) { // 如果某字符存在于字符串中
count++;
offset += subStr.length;
}
} while ( offset != -1 );
return count;
}
countInstances('www.segmentfault.com', '.')
// alert( countInstances('www.segmentfault.com', '.') );
indexOf用法
当count++; offset += subStr.length;
count++; offset += subStr.length;
count
表示的是计数器,记下字符出现的次数offset
赋值给indexOf
的第二个参数,表示从父字符串的 offset 索引位置开始 查找 子字符串subStr
当
offset
找到了,就count
+1,再从offset += subStr.length
的位置开始找,因为indexOf
count
表示的是计数器,记下字符出现的次数offset
赋值给indexOf
的第二个参数,表示从父字符串的 offset 索引位置开始 查找 子字符串subStr
offset
找到了,就count
+1,再从offset += subStr.length
的位置开始找,因为indexOf
只能判断最初找到子字符串的索引。。🎜我好像说的有的复杂,其实很简单的,你在纸上画下执行过程就知道了🎜