Модульні уроки (4/4)
Розділити за допомогою регулярного виразу
String.prototype.split(separator) приймає не тільки фіксований рядок, але
також регулярний вираз як роздільник. Це робить його потужним інструментом для токенізації
структурований текст.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]Регулярний вираз /[,\s]+/ відповідає "один або кілька з коми або пробілу": split
розбивається на будь-який складений роздільник.
Типові випадки
- Дозвільний CSV:
text.split(/\s*,\s*/)для обробки пробілів навколо ком. - Наївний токенізер:
text.split(/\s+/)для вилучення слів. - Зберігати роздільник: якщо регулярний вираз містить групи захоплення, вміст груп включається в масив результатів.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Без групи () крапка з комою зникне. З (;) ви зберігаєте його
в результаті.
Збереження роздільників в операціях розділення
Якщо ви розмістите роздільні роздільники в дужках для захоплення, вихід String.prototype.split включатиме самі роздільники як елементи остаточного масиву, а не відкидає їх.
Спробуйте
Знайдіть кожен дозволений роздільник CSV: кома з необов’язковими пробілами навколо неї. Таким чином ви можете використовувати його в розділенні, щоб токенізувати список.
Показати підказку
Використовуйте \\s* перед і після коми, щоб поглинути будь-які додаткові пробіли.
Рішення доступне після 3 спроб
Повторна вправа
Знайдіть кожен роздільник «пробілів або крапок з комою» (один або кілька). Таким чином split розділить текст на слова.
Показати підказку
Поєднати \\s і ; у класі [\\s;] з квантором +.
Рішення доступне після 3 спроб
Додатковий виклик
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
Показати підказку
Enclose the math operators character class in capture parentheses to preserve them in the split array.
Рішення доступне після 3 спроб