Maison > Article > interface Web > Apprentissage de chaînes JS : calculer toutes les positions d'occurrence d'un caractère donné
Dans l'article précédent "Comment js sait-il si une sous-chaîne donnée existe", nous avons présenté la méthode d'obtention de la première ou de la dernière position d'occurrence de la sous-chaîne dans la chaîne. Cette fois, nous augmentons la difficulté et voyons comment obtenir toutes les occurrences d'une sous-chaîne dans une chaîne.
Nous avons appris dans l'article précédent que nous pouvons utiliser les fonctions indexOf() et lastIndexOf() pour obtenir les premières et dernières positions d'occurrence d'une sous-chaîne ; si la sous-chaîne n'est pas trouvée, -1 est renvoyée.
Les deux fonctions peuvent recevoir le deuxième paramètre facultatif start
. La valeur ne peut être qu'un entier, indiquant la position dans la chaîne à partir de laquelle commencer la recherche. ~ longueur-1
. lastIndexOf() Si le paramètre start est spécifié, recherche de l'arrière vers l'avant à la position spécifiée dans une chaîne. start
,值只能是一个整数,表示从字符串中的哪个位置开始搜索,取值范围是 0
~ length-1
。lastIndexOf()如果指定了start参数,则在一个字符串中的指定位置从后向前搜索。
利用这个可选的第二个参数start和循环语句,我们就可以计算给定子串(包含一个或多个字符)的全部出现位置。
首先看看使用indexOf()是怎么统计给定字符在字符串的所有出现位置
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit"; var positions = new Array(); var pos = stringValue.indexOf("e"); while(pos > -1){ positions.push(pos); //将出现位置赋给数组 pos = stringValue.indexOf("e",pos + 1); //从给定字符出现位置的后一位开始查找 } console.log(positions);//"3,24,32,35,52"
分析:先使用indexOf("e")
获取第一次出现位置并赋值给变量pos;然后使用while语句通过循环调用indexOf(),不断将查找起始位置设置为“pos + 1
”,从给定字符出现位置pos的后一位开始查找,获取下一个出现位置;直到查找不到,返回-1结束。因此输出结果为:
可以看出,给定字符“e
var stringValue = "Lorem ipsum dolor sit amet, consectetur adipisicing elit"; var positions = new Array(); var pos = stringValue.lastIndexOf("e"); while(pos > -1){ positions.push(pos); pos = stringValue.lastIndexOf("e",pos - 1); } console.log(positions);//"3,24,32,35,52"Analyse : utilisez d'abord
indexOf("e")
pour obtenir la première occurrence et attribuer une valeur Donnez la variable pos; puis utilisez l'instruction while pour appeler indexOf() via une boucle, définissez constamment la position de départ de la recherche sur "pos + 1
", et commencez la recherche à partir du dernier chiffre du étant donné la position du caractère pos, Obtenez la position de l'occurrence suivante jusqu'à ce qu'elle soit introuvable, -1 est renvoyé. Le résultat de sortie est donc :
On peut voir que le caractère donné "e
" apparaît 5 fois dans la chaîne stringValue. Comme la position de la chaîne commence à 0 et non à 1, les positions d'occurrence sont respectivement 3, 24. , 32, 35, 52.
Voyons ensuite comment utiliser lastIndexOf() pour compter toutes les occurrences d'un caractère donné dans une chaîne
rrreeeAnalyse : utiliser lastIndexOf() pour obtenir toutes les occurrences est en fait similaire à l'utilisation de indexOf(), mais parce que lastIndexOf ( ) renvoie la position de la dernière occurrence, donc à chaque fois que nous effectuons une boucle, nous devons définir la position de départ de la recherche sur "pos - 1". Regardez les résultats de sortie :
🎜🎜🎜🎜 On peut voir que toutes les positions d'occurrence du caractère donné "e" obtenues dans la chaîne stringValue sont dans l'ordre inverse, et l'ordre est : 52, 35, 32, 24, 3 . 🎜🎜D'accord, c'est tout. Si vous en avez besoin, vous pouvez lire : 🎜Tutoriel avancé javascript🎜🎜.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!