Pelajaran modul (4/4)
Pisahkan dengan regex
String.prototype.split(separator) tidak hanya menerima string tetap tetapi juga
juga regex sebagai pemisah. Ini menjadikannya alat yang ampuh untuk melakukan tokenisasi
teks terstruktur.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]Regex /[,\s]+/ cocok dengan "satu atau lebih koma atau spasi": split
terbelah pada pembatas majemuk apa pun.
Kasus-kasus umum
- CSV Permisif:
text.split(/\s*,\s*/)untuk menangani spasi di sekitar koma. - Tokenizer naif:
text.split(/\s+/)untuk mengekstrak kata. - Simpan pemisah: jika ekspresi reguler berisi grup penangkap, maka konten grup disertakan dalam larik hasil.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Tanpa grup () titik koma akan hilang. Dengan (;) Anda menyimpannya
dalam hasilnya.
Mempertahankan pemisah dalam operasi terpisah
Jika Anda menempatkan pemisah terpisah di dalam tanda kurung, output dari String.prototype.split akan menyertakan pemisah itu sendiri sebagai elemen dalam larik terakhir, alih-alih membuangnya.
Cobalah
Temukan setiap pemisah CSV yang permisif: koma dengan spasi opsional di sekitarnya. Dengan cara ini Anda dapat menggunakannya secara terpisah untuk memberi token pada daftar.
Tunjukkan petunjuk
Gunakan \\s* sebelum dan sesudah koma untuk menyerap spasi opsional.
Solusi tersedia setelah 3 upaya
Tinjau latihan
Temukan setiap pemisah 'spasi atau titik koma' (satu atau lebih). Dengan cara ini pemisahan akan membuat teks menjadi kata-kata menjadi token.
Tunjukkan petunjuk
Gabungkan \\s dan ; di kelas [\\s;] dengan + quantifier.
Solusi tersedia setelah 3 upaya
Tantangan tambahan
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
Tunjukkan petunjuk
Enclose the math operators character class in capture parentheses to preserve them in the split array.
Solusi tersedia setelah 3 upaya