Aujourd'hui, j'ai utilisé la méthode split() pour compter le nombre de fois qu'un certain caractère apparaît dans une chaîne. Au fait, j'ai vérifié Baidu pour voir s'il existe d'autres méthodes. J'ai vu la fonction suivante, mais je ne comprends pas. ça count++; offset += subStr.length;
Qu'est-ce que ça veut dire ? S'il te plaît, laisse les seniors de passage l'expliquer !
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 utilisation
J'ai l'impression de dire que c'est compliqué, mais c'est en fait très simple. Dessinez simplement le processus d'exécution sur papier et vous comprendrez🎜.count++; offset += subStr.length;
count++; offset += subStr.length;
count
表示的是计数器,记下字符出现的次数offset
赋值给indexOf
的第二个参数,表示从父字符串的 offset 索引位置开始 查找 子字符串subStr
当
offset
找到了,就count
+1,再从offset += subStr.length
的位置开始找,因为indexOf
count
représente un compteur, enregistrant le nombre de fois qu'un caractère apparaîtoffset
affectation Le deuxième paramètre donné àindexOf
signifie rechercher la sous-chaînesubStr
à partir de la position d'index de décalage de la chaîne parent lorsqueoffset
est trouvé. , Justecount
+1, puis commencez la recherche à partir de la position deoffset += subStr.length
, carindexOf
ne peut déterminer que l'emplacement initial de la sous-chaîne trouvée. .