--- title: String.prototype.split() slug: Web/JavaScript/Reference/Global_Objects/String/split tags: - JavaScript - String - Регулярний вираз - метод - рядок translation_of: Web/JavaScript/Reference/Global_Objects/String/split ---
Метод split()
розділяє {{jsxref("String","рядок")}} на впорядковану множину підрядків та повертає масив цих підрядків. Ділення здійснюється пошуком шаблону; цей шаблон надається першим параметром під час виклику методу.
str.split([separator[, limit]])
separator
{{optional_inline}}Шаблон, що описує, де має відбуватися розбиття рядка. Параметр separator
(роздільник) може бути простим рядком або {{jsxref("Global_Objects/RegExp", "регулярним виразом", "", 1)}}.
separator
є просто одним символом; він використовується для розмежування та розбиття рядка. Наприклад, рядок, що містить значення, розділені табуляцією (TSV, tab-separated values), може бути розібраний за символом табуляції в якості роздільника, ось так: myString.split("\t")
.separator
містить множину символів, для розділення має бути знайдена вся ця послідовність.separator
не вказаний чи не зустрічається у str
, повернений масив містить один елемент, який є цілим рядком.separator
знаходиться на початку (чи в кінці) рядка, він все одно матиме ефект роздільника. Результатом буде порожній (тобто, нульової довжини) рядок, який з'явиться на першій (чи останній) позиції поверненого масиву.separator
є порожнім рядком (""
), str
перетворюється на масив з кожного зі своїх "символів" UTF-16.Застереження: Коли в якості роздільника використовується порожній рядок (""
), рядок не розбивається на символи, що сприймаються користувачем (кластери графем), чи символи Юнікоду (коди символів), а лише на кодові одиниці UTF-16. Це розбиває сурогатні пари. Дивіться “Як перетворити рядок на масив символів у JavaScript?” на StackOverflow.
limit
{{optional_inline}}Невід'ємне ціле число, що обмежує кількість частин. Якщо надане, метод розбиває рядок на кожному знайденому роздільнику separator
, але зупиняється, коли у масив була додана кількість елементів limit
. Будь-який текст, що лишився, взагалі не буде доданий у масив.
limit
кількість елементів, якщо рядок закінчився раніше, ніж було досятнуто значення limit
.limit
дорівнює 0
, розділення рядка не виконується.{{jsxref("Array", "Масив")}} рядків, відділених у кожній точці, де роздільник 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"
Бонус: скористайтесь оператором {{jsxref("Operators/Оператори_порівняння", "===", "#Ідентичність_строга_рівність")}}, щоб перевірити, чи був початковий рядок паліндромом.
Специфікація |
---|
{{SpecName('ESDraft', '#sec-string.prototype.split', 'String.prototype.split')}} |
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.
{{Compat("javascript.builtins.String.split")}}