Learn JavaScript

slice() - метод для получения части строки в JavaScript

slice() возвращает часть строки по индексам.

Это один из самых удобных способов взять подстроку: от одного индекса до другого, от середины до конца или несколько символов с конца строки.

Синтаксис

str.slice(start)
str.slice(start, end)

Метод вызывается у строки и возвращает новую строку.

Как работает slice()

const text = "JavaScript";

console.log(text.slice(0, 4)); // "Java"
console.log(text.slice(4));    // "Script"

Первый аргумент - индекс начала, второй - индекс конца.

Важно: символ с индексом end в результат не входит.

const text = "hello";

console.log(text.slice(1, 4)); // "ell"

Здесь берутся символы с индексами 1, 2 и 3.

Если второй аргумент не передать

Если передать только start, строка будет взята от этого индекса до конца.

const text = "JavaScript";

console.log(text.slice(4)); // "Script"

Отрицательные индексы

slice() поддерживает отрицательные индексы.

Это значит, что можно считать с конца строки:

const text = "JavaScript";

console.log(text.slice(-6));    // "Script"
console.log(text.slice(-6, -3)); // "Scr"

Это особенно удобно, когда нужно взять последние символы строки.

const file = "image.png";

console.log(file.slice(-3)); // "png"

Исходная строка не меняется

Строки в JavaScript неизменяемы, поэтому slice() не меняет исходную строку, а возвращает новое значение.

const text = "JavaScript";
const part = text.slice(0, 4);

console.log(text); // "JavaScript"
console.log(part); // "Java"

Если индексы выходят за диапазон

slice() не падает с ошибкой, если индекс выходит за пределы строки.

const text = "abc";

console.log(text.slice(0, 10)); // "abc"
console.log(text.slice(10));    // ""

Если начало оказывается правее конца, результатом будет пустая строка.

const text = "hello";

console.log(text.slice(4, 2)); // ""

Когда это полезно

slice() удобно использовать, когда:

  • нужно взять часть строки по индексам
  • надо получить начало или конец строки
  • нужно вырезать расширение файла, префикс или суффикс

Пример:

const phone = "+79991234567";
const code = phone.slice(0, 2);

console.log(code); // "+7"

slice() и substring()

slice() и substring() похожи, но работают не одинаково.

У slice() есть важный плюс: он поддерживает отрицательные индексы.

const text = "JavaScript";

console.log(text.slice(-6));      // "Script"
console.log(text.substring(-6));  // "JavaScript"

Если нужна работа с концом строки, slice() обычно удобнее.

Частые ошибки

Думать, что конечный индекс включается

const text = "hello";

console.log(text.slice(1, 4)); // "ell"

Символ с индексом 4 в результат не попадёт.

Путать отрицательные индексы с ошибкой

const text = "hello";

console.log(text.slice(-2)); // "lo"

Для slice() отрицательные индексы - это нормальное и полезное поведение.

Быстрая памятка

  • slice(start, end) возвращает часть строки
  • символ с индексом end не включается
  • если end не передать, строка берётся до конца
  • slice() поддерживает отрицательные индексы
  • исходная строка не меняется

Коротко

slice() - это метод строки в JavaScript, который возвращает часть строки по индексам. Его особенно удобно использовать, когда нужно взять подстроку с конца, потому что метод поддерживает отрицательные индексы.