JavaScriptNapisy

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
Na tej stronie

Przykład

#
JavaScript
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)
Konsola
JavaScript
od
podstaw
JavaScript od podstaw

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

#
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

#
Rozszerzenie pliku i ukrywanie numeru
JavaScript
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)
Konsola
html
***********4815
Wielka pierwsza litera
JavaScript
function capitalize(word) {
  return word.slice(0, 1).toUpperCase() + word.slice(1)
}

console.log(capitalize('łódź'))
console.log(capitalize('javaScript'))
Konsola
Łódź
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.

Indeksy poza napisem
JavaScript
const code = 'CSS'

console.log(code.slice(1, 100))
console.log(code.slice(5).length)
console.log(code.slice(2, 1).length)
Konsola
SS
0
0

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) zamiast text.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

#

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