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
Przykład
#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'))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
#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
#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)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)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'))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żenieslice(index + 1)przy braku separatora zwróci cały napis, co łatwo przeoczyć. - Do sprawdzenia samego zakończenia napisu, np. rozszerzenia
.pdf, czytelniejsze jestendsWith().
Powiązane hasła
#- String.prototype.indexOf()Zwraca indeks pierwszego wystąpienia podanego tekstu w napisie albo -1, gdy go nie ma.
- String.prototype.slice()Zwraca fragment napisu od indeksu początkowego do końcowego (bez niego). Obsługuje indeksy ujemne.
- String.prototype.endsWith()Sprawdza, czy napis kończy się podanym tekstem. Zwraca true albo false.
- String.prototype.includes()Sprawdza, czy napis zawiera podany fragment tekstu. Zwraca true albo false i rozróżnia wielkość liter.
- Array.prototype.lastIndexOf()Zwraca indeks ostatniego wystąpienia wartości w tablicy albo -1, gdy jej nie ma.
Widzisz błąd albo brakuje przykładu? Napisz do nas.