String.prototype.split()

Метод split() розділяє рядок на впорядковану множину підрядків та повертає масив цих підрядків. Ділення здійснюється пошуком шаблону; цей шаблон надається першим параметром під час виклику методу.

Синтаксис

str.split([separator[, limit]])

Параметри

separator Optional

Шаблон, що описує, де має відбуватися розбиття рядка. Параметр separator (роздільник) може бути простим рядком або регулярним виразом.

  • Найпростішим є випадок, коли separator є просто одним символом; він використовується для розмежування та розбиття рядка. Наприклад, рядок, що містить значення, розділені табуляцією (TSV, tab-separated values), може бути розібраний за символом табуляції в якості роздільника, ось так: myString.split("\t").
  • Якщо separator містить множину символів, для розділення має бути знайдена вся ця послідовність.
  • Якщо параметр separator не вказаний чи не зустрічається у str, повернений масив містить один елемент, який є цілим рядком.
  • Якщо separator знаходиться на початку (чи в кінці) рядка, він все одно матиме ефект роздільника. Результатом буде порожній (тобто, нульової довжини) рядок, який з'явиться на першій (чи останній) позиції поверненого масиву.
  • Якщо separator є порожнім рядком (""), str перетворюється на масив з кожного зі своїх "символів" UTF-16.

Застереження: Коли в якості роздільника використовується порожній рядок (""), рядок не розбивається на символи, що сприймаються користувачем (кластери графем), чи символи Юнікоду (коди символів), а лише на кодові одиниці UTF-16. Це розбиває сурогатні пари. Дивіться “Як перетворити рядок на масив символів у JavaScript?” на StackOverflow.

limit Optional

Невід'ємне ціле число, що обмежує кількість частин. Якщо надане, метод розбиває рядок на кожному знайденому роздільнику separator, але зупиняється, коли у масив була додана кількість елементів limit. Будь-який текст, що лишився, взагалі не буде доданий у масив.

  • Масив може містити меншу за limit кількість елементів, якщо рядок закінчився раніше, ніж було досятнуто значення limit.
  • Якщо limit дорівнює 0, розділення рядка не виконується.

Значення, що повертається

Масив рядків, відділених у кожній точці, де роздільник separator зустрічається у наданому рядку.

Опис

Коли separator знайдено, він видаляється з рядка, а підрядки повертаються у масиві.

Якщо separator є регулярним виразом із захопленими групами, то під час кожного збігу з separator результати (в тому числі undefined) захоплених груп додаються у масив результатів.

Якщо роздільник є масивом, то він примусово приводиться до рядка та використовується в якості роздільника.

Приклади

Використання split()

Коли рядок порожній, split() повертає масив, що містить один порожній рядок, а не порожній масив. Якщо і рядок, і роздільник є порожніми рядками, повертається порожній масив.

const myString = ''
const splits = myString.split()

console.log(splits)

// ↪ [""]

Наступний приклад визначає функцію, яка розбиває рядок на масив рядків, використовуючи вказаний роздільник. Після розбиття рядка функція виводить повідомлення, які містять початковий рядок (до розбиття), використаний роздільник, кількість елементів масиву та окремі елементи масиву.

function splitString(stringToSplit, separator) {
  const arrayOfStrings = stringToSplit.split(separator)

  console.log('Початковий рядок: ', stringToSplit)
  console.log('Роздільник: ', separator)
  console.log('Масив містить ', arrayOfStrings.length, ' елементів: ', arrayOfStrings.join(' / '))
}

const tempestString = 'Який чудесний світ новий оцей де отакі є люди!'
const monthString = 'Січ,Лют,Берез,Квіт,Трав,Черв,Лип,Серп,Верес,Жовт,Листоп,Груд'

const space = ' '
const comma = ','

splitString(tempestString, space)
splitString(tempestString)
splitString(monthString, comma)

Цей приклад виводить наступний результат:

Початковий рядок:  Який чудесний світ новий оцей де отакі є люди!
Роздільник: " "
Масив містить  9  елементів:  Який / чудесний / світ / новий / оцей / де / отакі / є / люди!

Початковий рядок:  Який чудесний світ новий оцей де отакі є люди!
Роздільник: "undefined"
Масив містить  1  елементів:  Який чудесний світ новий оцей де отакі є люди!

Початковий рядок:  Січ,Лют,Берез,Квіт,Трав,Черв,Лип,Серп,Верес,Жовт,Листоп,Груд
Роздільник: ","
Масив містить  12  елементів:  Січ / Лют / Берез / Квіт / Трав / Черв / Лип / Серп / Верес / Жовт / Листоп / Груд

Видалення пробілів з рядка

У наступному прикладі split() шукає нуль або більше пробілів з наступною крапкою з комою, з наступним нулем чи більше пробілів — і, коли знаходить, видаляє пробіли та крапку з комою з рядка. nameList є масивом, що повертається як результат методу split().

const names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '

console.log(names)

const re = /\s*(?:;|$)\s*/
const nameList = names.split(re)

console.log(nameList)

Цей код виводить два рядки; перший виводить початковий рядок, а другий - масив, отриманий в результаті.

Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
[ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand", "" ]

Повернення обмеженої кількості елементів

У наступному прикладі split() шукає пробіли у рядку та повертає перші 3 елементи, які знаходить.

const myString = 'Всім привіт. Як справи?'
const splits = myString.split(' ', 3)

console.log(splits)

Цей скрипт виведе наступне:

["Всім", "привіт.", "Як"]

Розбиття за допомогою RegExp з додаванням частин роздільника у результат

Якщо separator є регулярним виразом, що містить дужки (), то збіги також додаються у масив.

const myString = 'Привіт 1 слово. Речення номер 2.'
const splits = myString.split(/(\d)/)

console.log(splits)

Цей скрипт виведе наступне:

[ "Привіт ", "1", " слово. Речення номер ", "2", "." ]

Заувага: \d відповідає символьному класу цифр між 0 та 9.

Перевертання рядка за допомотою split()

Це не найнадійніший спосіб перевертання рядка:

const str = 'йцуке'
const strReverse = str.split('').reverse().join('') 
// 'екуцй'

// split() повертає масив, на якому можна застосувати reverse() та join()

Він не працює, якщо рядок містить кластери графем, навіть при використанні методу split, сумісного з Юнікодом (замість цього скористайтесь, наприклад, esrever).

const str = 'résumé'
const strReverse = str.split(/(?:)/u).reverse().join('')
// => "́emuśer"

Бонус: скористайтесь оператором ===, щоб перевірити, чи був початковий рядок паліндромом.

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'String.prototype.split' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
splitChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support 0.1.100

Legend

Full support  
Full support

Див. також