String. prototype. lastIndexOf()
Renvoie l’indice de la dernière occurrence du texte donné dans une chaîne, ou -1 s’il est absent.
- Renvoie
- L’indice de début de la dernière occurrence, ou
-1si le texte n’a pas été trouvé. - Modifie l’original
- Non
Exemple
#const file = 'projet.final.v2.html'
console.log(file.lastIndexOf('.'))
console.log(file.indexOf('.'))
console.log(file.slice(file.lastIndexOf('.') + 1))
console.log(file.lastIndexOf('.css'))Définition et utilisation
#La méthode lastIndexOf() parcourt la chaîne depuis la fin et renvoie la position à laquelle commence la dernière occurrence du fragment recherché. La position se compte toujours depuis le début de la chaîne, à partir de zéro. Quand le fragment est absent, le résultat est -1.
Elle sert le plus souvent à extraire la fin d’un texte après le dernier séparateur : l’extension d’un fichier après le dernier point, le nom d’un fichier après la dernière barre oblique d’un chemin, ou le dernier segment d’une URL. Associée à slice(), une seule ligne suffit.
Le second argument limite la recherche : la méthode ne considère que les occurrences commençant à cette position ou avant. La casse a de l’importance, et pour chercher selon un motif plutôt qu’un texte fixe, on utilise des expressions régulières.
Syntaxe
#string.lastIndexOf(searchString)
string.lastIndexOf(searchString, position)Paramètres
#searchString
string
Texte recherché. La casse a de l’importance.position
number, optionnel
Indice le plus élevé auquel une correspondance peut commencer. Par défaut, toute la chaîne est parcourue.
Plus d’exemples
#const path = 'cours/javascript/lecons/boucles.md'
const fileName = path.slice(path.lastIndexOf('/') + 1)
const folder = path.slice(0, path.lastIndexOf('/'))
console.log(fileName)
console.log(folder)const text = 'ok, erreur, ok, erreur, ok'
const last = text.lastIndexOf('erreur')
const previous = text.lastIndexOf('erreur', last - 1)
console.log(last, previous)function getExtension(fileName) {
const dot = fileName.lastIndexOf('.')
return dot === -1 ? '(aucune)' : fileName.slice(dot + 1)
}
console.log('README'.slice('README'.lastIndexOf('.') + 1))
console.log(getExtension('README'))
console.log(getExtension('styles.min.css'))Sans point, lastIndexOf() renvoie -1, et slice(-1 + 1) équivaut à slice(0), c’est-à-dire toute la chaîne. Avant de découper quoi que ce soit, vérifiez donc que le séparateur existe bien.
Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Vérifiez toujours le résultat par rapport à
-1. L’expressionslice(index + 1)renvoie toute la chaîne en l’absence de séparateur, ce qui est facile à manquer. - Pour vérifier seulement la fin d’une chaîne, comme une extension
.pdf,endsWith()est plus lisible.
Entrées associées
#- String.prototype.indexOf()Renvoie l’indice de la première occurrence du texte donné dans une chaîne, ou -1 s’il est absent.
- String.prototype.slice()Renvoie un fragment de la chaîne entre un indice de départ et un indice de fin (exclu). Prend en charge les indices négatifs.
- String.prototype.endsWith()Vérifie si une chaîne se termine par le texte donné. Renvoie true ou false.
- String.prototype.includes()Vérifie si une chaîne contient le fragment de texte donné. Renvoie true ou false et distingue majuscules et minuscules.
- Array.prototype.lastIndexOf()Renvoie l’indice de la dernière occurrence d’une valeur dans le tableau, ou -1 si elle n’y est pas.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.