Maison > interface Web > js tutoriel > le corps du texte

Apprentissage de chaînes JS : calculer toutes les positions d'occurrence d'un caractère donné

青灯夜游
Libérer: 2021-08-19 13:36:58
original
2611 Les gens l'ont consulté

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"
Copier après la connexion

分析:先使用indexOf("e")获取第一次出现位置并赋值给变量pos;然后使用while语句通过循环调用indexOf(),不断将查找起始位置设置为“pos + 1”,从给定字符出现位置pos的后一位开始查找,获取下一个出现位置;直到查找不到,返回-1结束。因此输出结果为:

Apprentissage de chaînes JS : calculer toutes les positions doccurrence dun caractère donné

可以看出,给定字符“e

En utilisant ce deuxième paramètre facultatif start et l'instruction loop, nous pouvons calculer toutes les occurrences d'une sous-chaîne donnée (contenant un ou plusieurs caractères).

Tout d'abord, voyons comment utiliser indexOf() pour compter toutes les occurrences d'un caractère donné dans une chaîne

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"
Copier après la connexion
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 :

Apprentissage de chaînes JS : calculer toutes les positions doccurrence dun caractère donné

Apprentissage de chaînes JS : calculer toutes les positions doccurrence dun caractère donné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

rrreee

Analyse : 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal