String.prototype.slice()

Метод slice() (викраяти, вирізати скибку) значень String витягає частину свого рядка і повертає її новим рядком, не змінюючи початковий.

Спробуйте його в дії

Синтаксис

slice(indexStart)
slice(indexStart, indexEnd)

Параметри

indexStart

Індекс першого символу, що буде включений в повернений підрядок.

indexEnd Необов'язкове

Індекс першого символу, котрий буде виключений з поверненого підрядка.

Повернене значення

Новий рядок, що містить вибрану частину рядка.

Опис

Метод slice() витягає текст з початкового рядка і повертає його як новий рядок. Зміни в тексті одного рядка ніяк не впливають на інший.

Метод slice() витягає текст до позиції, вказаної у indexEnd, проте не включає її. Наприклад, str.slice(4, 8) вибирає вміст від п'ятого символу і до восьмого (символи з індексами 4, 5, 6 і 7).

              indexStart        indexEnd
                  ↓               ↓
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| T | h | e |   | m | i | r | r | o | r |
                  m   i   r   r
                 _______________
                      ↑
                    Результат
  • Якщо indexStart >= str.length, то повертається порожній рядок.
  • Якщо indexStart < 0, то індекс рахується з кінця рядка. Більш формально висловлюючись, в цьому випадку підрядок починається від max(indexStart + str.length, 0).
  • Якщо indexStart опущено, невизначений або не може бути перетворений на число, то він вважається еквівалентним 0.
  • Якщо indexEnd опущено, невизначений або не може бути перетворений на число, або якщо indexEnd >= str.length, то slice() вибирає символи до самого кінця рядка.
  • Якщо indexEnd < 0, то індекс рахується від кінця рядка. Більш формально висловлюючись, в цьому випадку підрядок закінчується на max(indexEnd + str.length, 0).
  • Якщо після нормалізації від'ємних значень indexEnd <= indexStart (наприклад, indexEnd вказує на символ, що стоїть перед indexStart), то повертається порожній рядок.

Приклади

Застосування slice() для створення нового рядка

Наступний приклад використовує метод slice() для створення нового рядка.

const str1 = "Світає, край неба палає..."; // Довжина рядка str1 дорівнює 26.
const str2 = str1.slice(1, 6);
const str3 = str1.slice(5, -3);
const str4 = str1.slice(8);
const str5 = str1.slice(30);
console.log(str2); // вітає
console.log(str3); // є, край неба палає
console.log(str4); // край неба палає...
console.log(str5); // ""

Застосування slice() з від'ємними індексами

Наступний приклад використовує метод slice() з від'ємними індексами.

let str = "Світає, край неба палає...";
str.slice(-8); // 'палає...'
str.slice(-8, -3); // 'палає'
str.slice(0, -3); // 'Світає, край неба палає'

Наступний приклад рахує 17 позицій у зворотному напрямі від кінця рядка, аби знайти індекс початку, і потім прямує звідти вперед на позицію 15 від початку рядка, щоб знайти індекс кінця вибірки.

console.log(str.slice(-17, 15)); // "рай не"

Код далі – рахує 11 позицій вперед від початку, щоб знайти індекс старту вибірки, і далі перебирає 9 позицій з кінця рядка у зворотному порядку, де і завершує вибирання.

console.log(str.slice(11, -9)); // "й неба"

А такі аргументи змушують метод порахувати 6 позицій з кінця у зворотному напрямку для знаходження індексу початку вибірки, і іще 1 у зворотному напрямку з кінця рядка для знаходження кінцевого індексу вибірки.

console.log(str.slice(-6, -1)); // "лає.."

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
slice
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 4
Opera Full support 4
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також