Lekcje modułu (4/4)
Split z regexem
Metoda String.prototype.split(separator) akceptuje jako separator nie tylko stały ciąg znaków, ale również wyrażenie regularne. Dzięki temu jest to potężne narzędzie do tokenizacji tekstu strukturalnego.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]Wyrażenie /[,\s]+/ dopasowuje "jeden lub więcej przecinków lub białych znaków": split dzieli tekst według dowolnego złożonego ogranicznika.
Typowe przypadki
- Tolerancyjny format CSV:
text.split(/\s*,\s*/)w celu obsługi spacji wokół przecinków. - Prosty tokenizator:
text.split(/\s+/)w celu wyodrębnienia słów. - Zachowanie separatora: jeśli wyrażenie regularne zawiera grupy przechwytujące, zawartość tych grup jest dołączana do wynikowej tablicy.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Bez grupy (), średnik by zniknął. Z grupą (;) zachowujesz go w tablicy wynikowej.
Zachowywanie separatorów w operacjach split
Jeśli umieścisz separatory w nawiasach przechwytujących, wynik działania metody String.prototype.split będzie zawierał same separatory jako elementy w wynikowej tablicy, zamiast je odrzucać.
Spróbuj sam
Znajdź każdy tolerancyjny separator CSV: przecinek z opcjonalnymi spacjami wokół niego. W ten sposób można użyć go w split, aby tokenizować listę.
Pokaż wskazówkę
Użyj \s* przed i po przecinku, aby wchłonąć wszelkie opcjonalne spacje.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Znajdź każdy separator typu 'spacje lub średniki' (jeden lub więcej). W ten sposób split podzieli tekst na słowa.
Pokaż wskazówkę
Połącz \s i ; w klasie [\s;] za pomocą kwantyfikatora +.
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Napisz wyrażenie regularne do użycia w split, które oddziela liczby, zachowując jednocześnie operatory matematyczne `+lock_content`, `-`, `*`, `/` jako elementy tablicy.
Pokaż wskazówkę
Umieść klasę znaków operatorów matematycznych w nawiasach przechwytujących, aby zachować je w tablicy po podziale.
Rozwiązanie dostępne po 3 próbach