Modulelessen (4/4)
Splitsen met regex
String.prototype.split(separator) accepteert niet alleen een vaste tekenreeks, maar
ook een regex als scheidingsteken. Dit maakt het een krachtig hulpmiddel om te tokeniseren
gestructureerde tekst.
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]De regex /[,\s]+/ komt overeen met "een of meer komma's of witruimten": splitsen
splitst op elk samengesteld scheidingsteken.
Typische gevallen
- Permissieve CSV:
text.split(/\s*,\s*/)om spaties rond komma's af te handelen. - Naïeve tokenizer:
text.split(/\s+/)om woorden te extraheren. - Behoud het scheidingsteken: als de regex vastgelegde groepen bevat, wordt de inhoud van de groepen is opgenomen in de resultaatarray.
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]Zonder de groep () zou de puntkomma verdwijnen. Met (;) behoud je het
in het resultaat.
Behoud van afscheiders bij splitoperaties
Als u gesplitste scheidingstekens binnen de vastgelegde haakjes plaatst, zal de uitvoer van String.prototype.split de scheidingstekens zelf als elementen in de uiteindelijke array opnemen, in plaats van ze weg te gooien.
Probeer het
Zoek elk tolerant CSV-scheidingsteken: een komma met optionele spaties eromheen. Op deze manier kunt u het gesplitst gebruiken om de lijst te tokeniseren.
Toon hint
Gebruik \\s* voor en na de komma om eventuele optionele spaties op te nemen.
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Zoek elk scheidingsteken voor spaties of puntkomma's (een of meer). Op deze manier zou splitsen de tekst in woorden omzetten.
Toon hint
Combineer \\s en ; in een klasse [\\s;] met de + kwantor.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
Toon hint
Enclose the math operators character class in capture parentheses to preserve them in the split array.
Oplossing beschikbaar na 3 pogingen