</> Praktum

Главная / JavaScript / Метод split

Справочник · JavaScript

Метод split(): строка в массив

Редакция PraktumОбновлено 4 мин чтенияУровень: новичок

Метод split(separator) разбивает строку на массив частей по разделителю: запятой, пробелу, переводу строки или регулярному выражению. Сам разделитель в результат не попадает. Второй аргумент ограничивает число частей. Обратная операция — метод массива join.

Коротко
  • 'a,b,c'.split(',') → ['a', 'b', 'c'].
  • split('') — на отдельные символы (с оговоркой про эмодзи).
  • Регулярное выражение: split(/\s+/) — по любым пробелам.
  • Второй аргумент — максимум частей.
  • Обратно в строку — join.

Минимальный пример

const tags = 'html, css, javascript';

tags.split(', ');               // ['html', 'css', 'javascript']
tags.split(',').map((t) => t.trim());  // то же, но устойчиво к лишним пробелам

Типичный случай — теги или email-адреса, введённые через запятую. Пробелы вокруг частей удобнее убрать через trim, чем угадывать точный разделитель.

Частые разделители

Примеры split
ВызовРезультат
'2026-10-25'.split('-')['2026', '10', '25']
'один два'.split(' ')['один', 'два']
text.split('\n')строки текста
'abc'.split('')['a', 'b', 'c']
'abc'.split()['abc'] — без разделителя вся строка
''.split(',')[''] — массив с одной пустой строкой

Обрати внимание на последнюю строку: пустая строка даёт не пустой массив, а массив из одной пустой строки. Проверяй ввод до разбиения.

Разбиение по регулярному выражению

'  много   пробелов  '.trim().split(/\s+/);  // ['много', 'пробелов']
'a, b;c , d'.split(/\s*[,;]\s*/);          // ['a', 'b', 'c', 'd']
'line1\r\nline2\nline3'.split(/\r?\n/);     // строки при любых переводах

Регулярное выражение решает проблему разных разделителей и лишних пробелов. /\s+/ — один или больше пробельных символов, /\r?\n/ — переводы строк Windows и Unix.

Пустые элементы

'a,,b,'.split(',');                  // ['a', '', 'b', '']
'a,,b,'.split(',').filter(Boolean);  // ['a', 'b']

Два разделителя подряд или разделитель в конце дают пустые строки. filter(Boolean) убирает их, потому что пустая строка ложна.

Лимит частей

'a-b-c-d'.split('-', 2);   // ['a', 'b'] — остальное отброшено

// разбить только по первому разделителю
const line = 'title: Привет: мир';
const i = line.indexOf(': ');
const [key, value] = [line.slice(0, i), line.slice(i + 2)];  // 'title', 'Привет: мир'

Второй аргумент не склеивает остаток в последний элемент, а просто отбрасывает лишнее. Чтобы разделить строку только по первому вхождению, используй indexOf и slice.

Строка в массив символов

'привет'.split('');   // ['п', 'р', 'и', 'в', 'е', 'т']
'👍🏽ok'.split('');    // эмодзи развалятся на части
[...'👍ok'];          // ['👍', 'o', 'k'] — по символам Unicode

'шалаш'.split('').reverse().join('') === 'шалаш';  // проверка палиндрома

split('') делит строку на кодовые единицы UTF-16, поэтому эмодзи и некоторые символы ломаются. Spread [...str] делит по символам Unicode; составные эмодзи с модификаторами корректно делит только Intl.Segmenter.

split с деструктуризацией

const [year, month, day] = '2026-10-25'.split('-').map(Number);
const [name, domain] = 'anna@example.ru'.split('@');

Разбор строки на части сразу по переменным — короткий и понятный приём. Числовые части приводи через map(Number). Подробнее — деструктуризация.

split или join

split

Строка → массив: разобрать ввод, CSV, путь, дату.

join

Массив → строка: собрать список через запятую, путь, класс.

Частые ошибки

  • Разбивают по ', ' и ломаются на вводе без пробела после запятой.
  • Не ожидают пустых строк от двойных разделителей.
  • Считают, что ''.split(',') вернёт пустой массив.
  • Делят эмодзи через split('').
  • Ждут, что лимит склеит остаток в последнюю часть.

Доступность

Разбирая ввод пользователя через split, принимай разные варианты: запятые с пробелами и без, переводы строк, точки с запятой. Сообщай о формате в подсказке у поля, а ошибки разбора показывай текстом, связанным с полем.

Поддержка браузерами

split поддерживается всеми браузерами. Intl.Segmenter доступен во всех актуальных браузерах.

Практика

Пользователь вводит теги через запятую или точку с запятой, с произвольными пробелами: ' html ,css;; JS '. Напиши функцию parseTags, которая вернёт массив уникальных тегов в нижнем регистре без пустых: ['html', 'css', 'js'].

Показать решение
function parseTags(input) {
  const tags = input
    .split(/[,;]/)
    .map((t) => t.trim().toLowerCase())
    .filter(Boolean);
  return [...new Set(tags)];
}

parseTags(' html ,css;; JS '); // ['html', 'css', 'js']

Открыть песочницу

Частые вопросы

Как разбить строку на массив?

str.split(разделитель), например 'a,b'.split(',').

Как разбить строку на символы?

split('') или надёжнее для эмодзи — [...str].

Как разбить по нескольким разделителям?

Регулярным выражением: str.split(/[,;]\s*/).

Почему в результате пустые строки?

Два разделителя подряд или разделитель в начале и конце. Убери их через filter(Boolean).

Как собрать массив обратно в строку?

Методом массива join(разделитель).

Источники

Ещё в разделе JavaScript