javascript - Dela vid enstaka skiljeteckenförekomst


Jag har strängar som

A_B_C_D
A_B___C_D

där ___ kunde vara var som helst i strängen.

Vad är det enklaste sättet att dela dem vid varje enskild _ men inte vid ___?

Svar #1

>>> "A_B_C_D".match(/(?:[^_]|_{2,})+/g)
["A", "B", "C", "D"]

>>> "A_B___C_D".match(/(?:[^_]|_{2,})+/g)
["A", "B___C", "D"]

Istället för att hitta separatorerna, hittar vi själva komponenterna. Observera att strängarna måste vara antingen icke-_s (eftersom separatorn är _), eller fler än ett _. Så regexen för att matcha dem är helt enkelt så här.

Observera att detta regex ignorerar de tomma strängarna om indata börjar eller slutar med _ (t.ex. "_a_" kommer bara att returnera ["a"].)