String : méthode indexOf()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthode indexOf() des valeurs String recherche dans cette chaîne de caractères et retourne l'indice de la première occurrence de la sous-chaîne de caractères définie. Elle prend une position de départ optionnelle et retourne la première occurrence de la sous-chaîne de caractères définie à un indice supérieur ou égal au nombre défini.
Exemple interactif
const paragraph =
"Je pense que le chien de Ruth est plus mignon que ton chien !";
const searchTerm = "chien";
const indexOfFirst = paragraph.indexOf(searchTerm);
console.log(
`L'indice de la première occurrence de « ${searchTerm} » est ${indexOfFirst}`,
);
// Résultat attendu : "L'indice de la première occurrence de « chien » est 16"
console.log(
`L'indice de la deuxième occurrence de « ${searchTerm} » est ${paragraph.indexOf(
searchTerm,
indexOfFirst + 1,
)}`,
);
// Résultat attendu : "L'indice de la deuxième occurrence de « chien » est 54"
Syntaxe
indexOf(searchString)
indexOf(searchString, position)
Paramètres
searchString-
La sous-chaîne de caractères à rechercher. Toutes les valeurs sont converties en chaînes de caractères, donc l'omission de ce paramètre ou le passage de
undefinedfait queindexOf()recherche la chaîne de caractères"undefined", ce qui est rarement ce que vous voulez. positionFacultatif-
La méthode retourne l'indice de la première occurrence de la sous-chaîne de caractères définie à une position supérieure ou égale à
position, qui par défaut vaut0. Sipositionest supérieure à la longueur de la chaîne de caractères appelante, la méthode ne recherche pas du tout dans la chaîne de caractères appelante. Sipositionest inférieure à zéro, la méthode se comporte comme sipositionvaut0.-
'le monde bonjour'.indexOf('o', -5)retourne4— parce que cela fait que la méthode se comporte comme si le deuxième argument vaut0, et la première occurrence deoà une position supérieure ou égale à0est à la position4. -
'le monde bonjour'.indexOf('monde', 12)retourne-1— parce que, bien qu'il soit vrai que la sous-chaîne de caractèresmondese trouve à l'indice11, cette position n'est pas supérieure ou égale à12. -
'le monde bonjour'.indexOf('o', 99)retourne-1— parce que99est supérieur à la longueur dele monde bonjour, ce qui fait que la méthode ne recherche pas du tout dans la chaîne de caractères.
-
Valeur de retour
L'indice de la première occurrence de searchString trouvée, ou -1 si rien n'est trouvé.
Valeur de retour lors de l'utilisation d'une chaîne de caractères de recherche vide
La recherche d'une chaîne de caractères de recherche vide produit des résultats étranges. Sans second argument, ou avec un second argument dont la valeur est inférieure à la longueur de la chaîne de caractères appelante, la valeur de retour est la même que celle du second argument :
"bonjour le monde".indexOf(""); // retourne 0
"bonjour le monde".indexOf("", 0); // retourne 0
"bonjour le monde".indexOf("", 3); // retourne 3
"bonjour le monde".indexOf("", 8); // retourne 8
Cependant, si le deuxième argument a une valeur supérieure ou égale à la longueur de la chaîne de caractères, la valeur retournée correspond à la longueur de cette chaîne de caractères :
"bonjour le monde".indexOf("", 16); // retourne 16
"bonjour le monde".indexOf("", 19); // retourne 16
"bonjour le monde".indexOf("", 22); // retourne 16
Dans le premier cas, la méthode se comporte comme si elle trouve une chaîne de caractères vide juste après la position définie dans le deuxième argument. Dans le second cas, la méthode se comporte comme si elle trouve une chaîne de caractères vide à la fin de la chaîne de caractères d'appel.
Description
Les chaînes de caractères sont indexées à partir de zéro : l'indice du premier caractère d'une chaîne de caractères est 0, et l'indice du dernier caractère d'une chaîne de caractères est la longueur de la chaîne de caractères moins 1.
"Baleine Bleue".indexOf("Baleine"); // retourne 0
"Baleine Bleue".indexOf("Licorne"); // retourne -1
"Baleine Bleue".indexOf("Bleue", 0); // retourne 8
"Baleine Bleue".indexOf("Bleue", 5); // retourne 8
"Baleine Bleue".indexOf("Baleine", 7); // retourne -1
"Baleine Bleue".indexOf(""); // retourne 0
"Baleine Bleue".indexOf("", 9); // retourne 9
"Baleine Bleue".indexOf("", 11); // retourne 11
"Baleine Bleue".indexOf("", 15); // retourne 13
La méthode indexOf() tient compte de la casse. Par exemple, l'expression suivante retourne -1 :
"Baleine Bleue".indexOf("bleue"); // returns -1
Vérifier les occurrences
Lorsqu'on vérifie si une sous-chaîne de caractères spécifique se trouve dans une chaîne de caractères, la manière correcte de le faire est de tester si la valeur de retour est -1 :
"Baleine Bleue".indexOf("Bleue") !== -1; // true ; a trouvé 'Bleue' dans 'Baleine Bleue'
"Baleine Bleue".indexOf("Licorne") !== -1; // false ; il n'y a pas de 'Licorne' dans 'Baleine Bleue'
Exemples
>Utiliser la méthode indexOf()
L'exemple suivant utilise indexOf() pour localiser des sous-chaînes de caractères dans la chaîne de caractères "Un nouveau monde".
const chaine = "Un nouveau monde";
console.log(chaine.indexOf("n")); // 1
console.log(chaine.indexOf("nouveau")); // 3
indexOf() et la sensibilité de la casse
L'exemple suivant définit deux variables de type chaîne de caractères.
Les variables contiennent la même chaîne de caractères, sauf que la deuxième chaîne de caractères contient des lettres majuscules. La première méthode console.log() affiche 19. Mais comme la méthode indexOf() est sensible à la casse, la chaîne de caractères "cheddar" n'est pas trouvée dans maChaineCaracteresMaj, donc la deuxième méthode console.log() affiche -1.
const maChaineCaracteres = "brie, pepper jack, cheddar";
const maChaineCaracteresMaj = "Brie, Pepper Jack, Cheddar";
console.log(maChaineCaracteres.indexOf("cheddar")); // 19
console.log(maChaineCaracteresMaj.indexOf("cheddar")); // -1
Utiliser indexOf() pour compter les occurrences d'une lettre dans une chaîne de caractères
L'exemple suivant assigne à compte le nombre d'occurrences de la lettre e dans la chaîne de caractères chaine :
const chaine = "Être, ou ne pas être, telle est la question.";
let compte = 0;
let position = chaine.indexOf("e");
while (position !== -1) {
compte++;
position = chaine.indexOf("e", position + 1);
}
console.log(compte); // 7
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.indexof> |
Compatibilité des navigateurs
Voir aussi
- La méthode
String.prototype.charAt() - La méthode
String.prototype.lastIndexOf() - La méthode
String.prototype.includes() - La méthode
String.prototype.split() - La méthode
Array.prototype.indexOf()