Skip to content

Commit

Permalink
update(JS): web/javascript/reference/global_objects/string/split
Browse files Browse the repository at this point in the history
  • Loading branch information
undead404 authored and AdriandeCita committed Jun 19, 2022
1 parent 8b97b99 commit f8a4594
Showing 1 changed file with 53 additions and 65 deletions.
118 changes: 53 additions & 65 deletions files/uk/web/javascript/reference/global_objects/string/split/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,37 +10,38 @@ tags:
- String
browser-compat: javascript.builtins.String.split
---

{{JSRef}}

Метод **`split()`** розділяє {{jsxref("String", "рядок")}} на впорядкований набір підрядків, кладе їх у масив і одразу повертає його. Розділення виконується шляхом пошуку патерну, причому патерн передається першим аргументом під час виклику методу.
Метод **`split()`** (розділити на частини) розділяє {{jsxref("String", "рядок")}} на впорядкований набір підрядків, кладе їх у масив і одразу повертає його. Розділення виконується шляхом пошуку патерну, причому патерн передається першим аргументом під час виклику методу.

{{EmbedInteractiveExample("pages/js/string-split.html", "taller")}}

## Синтаксис

```js
split()
split(separator)
split(separator, limit)
split();
split(separator);
split(separator, limit);
```

### Параметри

- `separator` {{optional_inline}}
- `separator` (розділювач) {{optional_inline}}

- : Патерн, який описує, в яких місцях рядок має розділитись. Розділювач `separator` може бути як простим рядком, так і {{jsxref("Global_Objects/RegExp", "регулярним виразом", "", 1)}}.

- В найпростішому випадку, `separator` — це єдиний символ, яким і буде розділено рядок. Наприклад, рядок, який містить значення, розділені символом табуляції (TSV), може бути розібраний шляхом передачі символу табуляції як розділювача:`myString.split("\t")`.
- В найпростішому випадку `separator` — це єдиний символ, яким і буде розділено рядок. Наприклад, рядок, який містить значення, розділені символом табуляції (TSV), може бути розібраний шляхом передачі символу табуляції як розділювача:`myString.split("\t")`.
- Якщо `separator` містить декілька символів, то знадобиться знайти цілу їхню послідовність, щоб розділити рядок.
- Якщо `separator` опущено, або ж якщо він не знайшовся в рядку, повернений масив міститиме один елемент — цілий вхідний рядок.
- Якщо `separator` знайшовся на самому початку (або в кінці) рядка, він все одно спричинить розділення. Результатом буде порожній (тобто нульової довжини) рядок, що знаходиться на першій (чи, відповідно, останній) позиції в поверненому масиві.
- Якщо `separator` — порожній рядок (`""`), вхідна стрічка буде конвертована у масив, що складатиметься з її окремих «символів» UTF-16.

> **Застереження:** Якщо порожній рядок (`""`) було вказано розділювачем, вхідну стрічку буде розділено **не** на _символи, зрозумілі для користувача_ ([графемні групи](https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)) чи юнікодні символи (кодові одиниці), а на кодові одиниці UTF-16. Це призводить до руйнації [сурогатних пар](https://unicode.org/faq/utf_bom.html#utf16-2). Подробиці у запитанні [“How do you get a string to a character array in JavaScript?” на StackOverflow](https://stackoverflow.com/a/34717402).
> **Застереження:** Якщо порожній рядок (`""`) було вказано розділювачем, вхідну стрічку буде розділено **не** на _символи, зрозумілі для користувача_ ([графемні групи (англ.)](https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries)) чи юнікодні символи (кодові одиниці), а на кодові одиниці UTF-16. Це призводить до руйнації [сурогатних пар](https://unicode.org/faq/utf_bom.html#utf16-2). Подробиці у запитанні ["Як на JavaScript зробити із рядка масив символів?" на StackOverflow (англ.)](https://stackoverflow.com/questions/4547609/how-to-get-character-array-from-a-string/34717402).
- `limit` {{optional_inline}}
- `limit` (обмеження) {{optional_inline}}

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

- Масив може містити менше елементів, ніж вказано в `limit`, якщо функція дійшла до кінця рядка раніше, ніж був вибраний `limit`.
- Якщо `limit` дорівнює `0`, буде повернено `[]`.
Expand All @@ -61,37 +62,45 @@ split(separator, limit)

### Застосування `split()`

Якщо початковий рядок порожній, `split()` поверне масив з одним порожнім рядком замість порожнього масиву. Якщо ж обидва значення — і рядок, і розділювач — це порожні рядки, буде повернено порожній масив.
Якщо початковий рядок порожній, і не вказаний жодний розділювач, `split()` поверне масив з одним порожнім рядком замість порожнього масиву. Якщо ж обидва значення — і рядок, і розділювач — це порожні рядки, буде повернено порожній масив.

```js
const myString = ''
const splits = myString.split()
const emptyString = '';

console.log(splits)
// Рядок є порожнім, жодний розділювач не вказаний
console.log(emptyString.split());
// [""]

// ↪ [""]
// і рядок, і розділювач – порожні рядки
console.log(emptyString.split(emptyString));
// []
```

В наступному прикладі оголошується функція, яка розділяє початковий рядок на масив рядків, використовуючи розділювач `separator`. Після розділення, функція записує повідомлення з початковим рядком (до розділення), використаний роздільник, кількість елементів у масиві, так самі окремі елементи масиву.
В наступному прикладі оголошується функція, яка розділяє початковий рядок на масив рядків, використовуючи розділювач `separator`. Після розділення функція друкує повідомлення з початковим рядком (до розділення), використаний розділювач, кількість елементів у масиві-результаті, а також самі окремі елементи цього масиву.

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

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

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

const tempestString = 'Який чудесний світ новий оцей, де отакі є люди!'
const monthString = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'
const tempestString = 'Який чудесний світ новий оцей, де отакі є люди!';
const monthString = 'Січ,Лют,Бер,Кві,Тра,Чер,Лип,Сер,Вер,Жов,Лис,Гру';

const space = ' '
const comma = ','
const space = ' ';
const comma = ',';

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

Цей приклад видає наступний вивід:
Expand All @@ -112,17 +121,18 @@ splitString(monthString, comma)

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

В наступному прикладі, `split()` шукає нуль чи більше пробілів, за якими йде крапка з комою й знову нуль чи більше пробілів, і, коли знаходить, видаляє їх з рядка. Масив `nameList` містить результат, повернений з `split()`.
В наступному прикладі `split()` шукає нуль чи більше пробілів, за якими йде крапка з комою, далі – знову нуль чи більше пробілів, і, коли знаходить, видаляє їх з рядка. Масив `nameList` містить результат, повернений з `split()`.

```js
const names = 'Сергій Мельник ;Антон Коваленко; Олена Шевченко ; Михайло Бондаренко ;Євген Бойко '
const names =
'Сергій Мельник ;Антон Коваленко; Олена Шевченко ; Михайло Бондаренко ;Євген Бойко ';

console.log(names)
console.log(names);

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

console.log(nameList)
console.log(nameList);
```

Цей код записує два рядки: перший містить початкову стрічку тексту, а другий — масив із результатами.
Expand All @@ -137,58 +147,36 @@ console.log(nameList)
В наступному прикладі `split()` шукає пробіли в рядку, і повертає перші три відділених значення з-поміж тих, які знаходить.

```js
const myString = 'Здрастуй, світе. Як ся маєш?'
const splits = myString.split(' ', 3)
const myString = 'Здрастуй, світе. Як ся маєш?';
const splits = myString.split(' ', 3);

console.log(splits)
console.log(splits);
```

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

```js
["Здрастуй,", "світе.", "Як"]
['Здрастуй,', 'світе.', 'Як'];
```

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

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

```js
const myString = 'Здрастуй 1 слово. Речення номер 2.'
const splits = myString.split(/(\d)/)
const myString = 'Здрастуй 1 слово. Речення номер 2.';
const splits = myString.split(/(\d)/);

console.log(splits)
console.log(splits);
```

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

```js
[ "Здрастуй ", "1", " слово. Речення номер ", "2", "." ]
['Здрастуй ', '1', ' слово. Речення номер ', '2', '.'];
```

> **Зауваження:** `\d` шукає збіги з [класом символів](/uk/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes), що відповідає цифрам від 0 до 9.
### Перевертання рядка за допомогою `split()`

> **Застереження:** Це не дуже надійний спосіб перевернути рядок:
>
> ```js example-bad
> const str = 'asdfghjkl'
> const strReverse = str.split('').reverse().join('')
> // 'lkjhgfdsa'
>
> // split() повертає масив, до якого можна застосувати reverse() і join()
> ```
>
> Це не працює, якщо рядок містить групи графем, навіть за умови, якщо `split()` правильно обробляє юнікод. (Натомість краще використати [esrever](https://github.com/mathiasbynens/esrever), наприклад.)
>
> ```js example-bad
> const str = 'mañana mañana'
> const strReverse = str.split('').reverse().join('')
> // => "anãnam anañam" // зауважте, що перше слово містить ã замість ñ
> ```
>
> **Бонус:** за допомогою {{jsxref("Operators", "===", "#operatory-rivnosti")}} можна перевірити, чи початковий рядок був паліндромом.
> **Примітка:** `\d` шукає збіги з [класом символів](/uk/docs/Web/JavaScript/Guide/Regular_Expressions/Character_Classes), що відповідає цифрам від 0 до 9.
## Специфікації

Expand Down

0 comments on commit f8a4594

Please sign in to comment.