String.prototype.split()
Метод split()
розділяє рядок
на впорядковану множину підрядків та повертає масив цих підрядків. Ділення здійснюється пошуком шаблону; цей шаблон надається першим параметром під час виклику методу.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
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
відповідає символьному класу (en-US) цифр між 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"
Бонус: скористайтесь оператором ===
, щоб перевірити, чи був початковий рядок паліндромом.
Специфікації
Сумісність з веб-переглядачами
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.