Dividere una stringa con parentesi graffe come delimitatori?
-
05-07-2019 - |
Domanda
'{5}<blah>{0}</blah>'
Voglio trasformarlo in:
['{5}', '<blah>', '{0}', '</blah>']
Attualmente uso: ________.split(/({.*?})/);
ma questo fallisce quando la parentesi graffa è il primo carattere come nel caso:
'{0}<blah>'
che si trasforma in:
['', '{0}', '<blah>']
... un array di 3 elementi, non un 2
Cosa c'è che non va nel mio regex?
Grazie!
Soluzione
Non c'è niente di sbagliato nel tuo regex, ma c'è un problema con il modo in cui stai usando split. Dividi restituisce un array basato su un delimitatore, quindi se il delimitatore è PRIMO, ti dà il materiale a sinistra e a destra dell'elemento diviso.
Controlla solo se il primo elemento == '' e rimuovilo se lo è.
Altri suggerimenti
Questo dovrebbe farlo:
split(/((?!^)\{.*?\})/)
Lo sguardo negativo - (?!^)
- ha esito positivo se la corrispondenza non inizia all'inizio della stringa.
Cosa ne pensi:
'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g)
Il valore dei blocchi ricci è ogni 2 elementi dall'elemento 1.