Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to split a string in js with some exceptions

I have this string:

a\,bcde,fgh,ijk\,lmno,pqrst\,uv

I need a JavaScript function that will split the string by every , but only those that don't have a \ before them

How can this be done?

like image 293
Ovi Avatar asked Sep 07 '11 06:09

Ovi


1 Answers

Here's the shortest thing I could come up with:

'a\\,bcde,fgh,ijk\\,lmno,pqrst\\,uv'.replace(/([^\\]),/g, '$1\u000B').split('\u000B')

The idea behind is to find every place where comma isn't prefixed with a backslash, replace those with string that is uncommon to come up in your strings and then split by that uncommon string.

Note that backslashes before commas have to be escaped using another backslash. Otherwise, javascript treats form \, as escaped comma and produce simply a comma out of it! In other words if you won't escape the backslash, javascript sees this: a\,bcde,fgh,ijk\,lmno,pqrst\,uv as this a,bcde,fgh,ijk,lmno,pqrst,uv.

like image 137
WTK Avatar answered Oct 25 '22 17:10

WTK