javascript - How to split a string by a character not directly preceded by a character of the same type? -
let's have string: "we.need..to...split.asap". split string delimiter ., wish split first . , include recurring .s in succeeding token.
expected output:
["we", "need", ".to", "..split", "asap"] in other languages, know possible look-behind /(?<!\.)\./ javascript unfortunately not support such feature.
i curious see answers question. perhaps there clever use of look-aheads presently evades me?
i considering reversing string, re-reversing tokens, seems work after... plus controversy: how reverse string in place in javascript?
thanks help!
here's variation of the answer guest271314 handles more 2 consecutive delimiters:
var text = "we.need.to...split.asap"; var re = /(\.*[^.]+)\./; var items = text.split(re).filter(function(val) { return val.length > 0; }); it uses detail if split expression includes capture group, captured items included in returned array. these capture groups thing interested in; tokens empty strings, filter out.
edit: unfortunately there's perhaps 1 slight bug this. if text split starts delimiter, included in first token. if that's issue, can remedied with:
var re = /(?:^|(\.*[^.]+))\./; var items = text.split(re).filter(function(val) { return !!val; }); (i think regex ugly , welcome improvement.)
Comments
Post a Comment