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 -1 si le texte n’a pas été trouvé.
Modifie l’original
Non
Sur cette page

Exemple

#
JavaScript
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'))
Console
15
6
html
-1

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

#
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

#
Nom de fichier et dossier à partir d’un chemin
JavaScript
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)
Console
boucles.md
cours/javascript/lecons
Chercher avant une position donnée
JavaScript
const text = 'ok, erreur, ok, erreur, ok'

const last = text.lastIndexOf('erreur')
const previous = text.lastIndexOf('erreur', last - 1)

console.log(last, previous)
Console
16 4
Piège : absence de séparateur
JavaScript
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'))
Console
README
(aucune)
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’expression slice(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

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.