Lezioni del modulo (4/4)
Split con regex
String.prototype.split(separator) accetta non solo una stringa fissa ma
anche una regex come separatore. Diventa cosi' uno strumento potente per
tokenizzare testo strutturato.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]La regex /[,\s]+/ matcha "una o piu' tra virgola o whitespace": split
suddivide su qualsiasi delimitatore composto.
Casi tipici
- CSV permissivo:
text.split(/\s*,\s*/)per gestire spazi attorno alle virgole. - Tokenizer naive:
text.split(/\s+/)per estrarre parole. - Mantenere il separatore: se la regex contiene gruppi catturanti, il contenuto dei gruppi viene incluso nell'array risultato.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Senza il gruppo () il punto-virgola sparirebbe. Con (;) lo conservi nel
risultato.
Conservare i delimitatori nello split
Se inserisci i delimitatori all'interno di parentesi tonde di cattura, l'output di String.prototype.split includerà anche i separatori stessi all'interno dell'array finale, invece di scartarli.
Prova tu
Trova ogni separatore CSV permissivo: una virgola con eventuali spazi attorno. Cosi' potresti usarlo in split per tokenizzare la lista.
Mostra suggerimento
Usa \\s* prima e dopo la virgola per assorbire eventuali spazi opzionali.
Soluzione disponibile dopo 3 tentativi
Esercizio di ripasso
Trova ogni separatore 'spazi o punto-e-virgola' (uno o piu'). Cosi' split tokenizzerebbe il testo come parole.
Mostra suggerimento
Combina \\s e ; in una classe [\\s;] con quantificatore +.
Soluzione disponibile dopo 3 tentativi
Sfida aggiuntiva
Scrivi una regex da usare in uno split che separi i numeri tenendo anche gli operatori matematici `+`, `-`, `*`, `/` come elementi dell'array.
Mostra suggerimento
Racchiudi la classe di caratteri degli operatori matematici tra parentesi tonde di cattura per preservarli durante lo split.
Soluzione disponibile dopo 3 tentativi