JavaScriptNapisy

String.prototype.lastIndexOf()

Zwraca indeks ostatniego wystąpienia podanego tekstu w napisie albo -1, gdy go nie ma.

Zwraca
Indeks początku ostatniego wystąpienia albo -1, gdy tekstu nie znaleziono.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const file = 'projekt.final.v2.html'

console.log(file.lastIndexOf('.'))
console.log(file.indexOf('.'))
console.log(file.slice(file.lastIndexOf('.') + 1))
console.log(file.lastIndexOf('.css'))
Konsola
16
7
html
-1

Definicja i zastosowanie

#

Metoda lastIndexOf() przeszukuje napis od końca i zwraca pozycję, na której zaczyna się ostatnie wystąpienie szukanego fragmentu. Pozycja jest liczona od początku napisu, od zera. Gdy fragmentu nie ma, wynikiem jest -1.

Najczęściej służy do wyciągania końcówki tekstu po ostatnim separatorze: rozszerzenia pliku po ostatniej kropce, nazwy pliku po ostatnim ukośniku w ścieżce albo ostatniego członu adresu URL. W parze z slice() wystarczy do tego jedna linijka.

Drugi argument ogranicza szukanie: metoda bierze pod uwagę tylko wystąpienia zaczynające się na tej pozycji lub wcześniej. Wielkość liter ma znaczenie, a do szukania według wzorca zamiast stałego tekstu służą wyrażenia regularne.

Składnia

#
Składnia
string.lastIndexOf(searchString)
string.lastIndexOf(searchString, position)

Parametry

#
  • searchString

    string

    Szukany tekst. Wielkość liter ma znaczenie.
  • position

    number, opcjonalny

    Największy indeks, na którym może zaczynać się dopasowanie. Domyślnie przeszukiwany jest cały napis.

Więcej przykładów

#
Nazwa pliku i folder ze ścieżki
JavaScript
const path = 'kursy/javascript/lekcje/petle.md'
const fileName = path.slice(path.lastIndexOf('/') + 1)
const folder = path.slice(0, path.lastIndexOf('/'))

console.log(fileName)
console.log(folder)
Konsola
petle.md
kursy/javascript/lekcje
Szukanie przed wskazaną pozycją
JavaScript
const text = 'ok, błąd, ok, błąd, ok'

const last = text.lastIndexOf('błąd')
const previous = text.lastIndexOf('błąd', last - 1)

console.log(last, previous)
Konsola
14 4
Pułapka: brak separatora
JavaScript
function getExtension(fileName) {
  const dot = fileName.lastIndexOf('.')
  return dot === -1 ? '(brak)' : fileName.slice(dot + 1)
}

console.log('README'.slice('README'.lastIndexOf('.') + 1))
console.log(getExtension('README'))
console.log(getExtension('styles.min.css'))
Konsola
README
(brak)
css

Bez kropki lastIndexOf() zwraca -1, a slice(-1 + 1) to slice(0), czyli cały napis. Dlatego przed wycięciem sprawdź, czy separator w ogóle istnieje.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Zawsze sprawdzaj wynik -1. Wyrażenie slice(index + 1) przy braku separatora zwróci cały napis, co łatwo przeoczyć.
  • Do sprawdzenia samego zakończenia napisu, np. rozszerzenia .pdf, czytelniejsze jest endsWith().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.