String. prototype. slice()
Zwraca fragment napisu od indeksu początkowego do końcowego (bez niego). Obsługuje indeksy ujemne.
- Zwraca
- Nowy napis z wyciętym fragmentem albo pusty napis, gdy zakres nie obejmuje żadnych znaków.
- Zmienia oryginał
- Nie
Przykład
#const title = 'JavaScript od podstaw'
console.log(title.slice(0, 10))
console.log(title.slice(11, 13))
console.log(title.slice(-7))
console.log(title)Definicja i zastosowanie
#Metoda slice() wycina fragment tekstu i zwraca go jako nowy napis. Pierwszy argument to indeks, od którego zaczynasz, a drugi to indeks, na którym kończysz, przy czym znak spod tego indeksu nie wchodzi do wyniku. Bez drugiego argumentu wycinek sięga do końca napisu.
Indeksy ujemne liczą się od końca: -1 to ostatni znak, -3 trzeci od końca. Dzięki temu text.slice(-4) wygodnie zwraca ostatnie cztery znaki, np. końcówkę numeru zamówienia.
Oryginalny napis się nie zmienia, bo napisy w JavaScript są niezmienne. Gdy początek wypada za końcem, wynikiem jest pusty napis. W nowym kodzie slice() jest zwykle lepszym wyborem niż substring(), bo działa tak samo jak slice() na tablicach.
Składnia
#string.slice(indexStart)
string.slice(indexStart, indexEnd)Parametry
#indexStart
number
Indeks pierwszego znaku wycinka. Wartość ujemna liczy się od końca napisu.indexEnd
number, opcjonalny
Indeks, przed którym wycinek się kończy (ten znak nie wchodzi do wyniku). Domyślnie długość napisu. Może być ujemny.
Więcej przykładów
#const file = 'projekt-koncowy.html'
const extension = file.slice(file.lastIndexOf('.') + 1)
const orderId = 'ZAM-2026-004815'
const masked = '*'.repeat(orderId.length - 4) + orderId.slice(-4)
console.log(extension)
console.log(masked)function capitalize(word) {
return word.slice(0, 1).toUpperCase() + word.slice(1)
}
console.log(capitalize('łódź'))
console.log(capitalize('javaScript'))W przeciwieństwie do word[0] wywołanie slice(0, 1) dla pustego napisu zwraca "" zamiast undefined, więc funkcja nie rzuci błędu.
const code = 'CSS'
console.log(code.slice(1, 100))
console.log(code.slice(5).length)
console.log(code.slice(2, 1).length)Za duże indeksy są przycinane do długości napisu, a gdy początek wypada za końcem, dostajesz pusty napis. slice() nie zamienia argumentów miejscami, w przeciwieństwie do substring().
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
#- Do pobrania ostatnich znaków używaj ujemnego indeksu:
text.slice(-3)zamiasttext.slice(text.length - 3). - Pamiętaj, że indeks końcowy nie wchodzi do wyniku. Długość wycinka to
indexEnd - indexStart. - Tnąc tekst z emoji, możesz przeciąć znak na pół, bo indeksy liczą jednostki UTF-16. Wtedy zamień napis na tablicę znaków:
[...text].slice(0, 5).join("").
Powiązane hasła
#- String.prototype.substring()Zwraca fragment napisu między dwoma indeksami. Ujemne wartości zamienia na 0, a odwrócone indeksy zamienia miejscami.
- String.prototype.at()Zwraca znak spod podanego indeksu. Ujemne indeksy liczą się od końca, więc at(-1) to ostatni znak.
- String.prototype.indexOf()Zwraca indeks pierwszego wystąpienia podanego tekstu w napisie albo -1, gdy go nie ma.
- String.prototype.split()Dzieli napis na tablicę fragmentów według separatora: znaku, tekstu lub wyrażenia regularnego.
- Array.prototype.slice()Zwraca kopię fragmentu tablicy bez zmieniania oryginału.
Widzisz błąd albo brakuje przykładu? Napisz do nas.