If I try
“my, tags are, in here”.split(” ,”)
I get the following
[ ‘my, tags are, in here’ ]
Whereas I want
[‘my’, ‘tags’, ‘are’, ‘in’, ‘here’]
String.split can also accept a regular expression:
This particular regex splits on a sequence of one or more commas or spaces, so that e.g. multiple consecutive spaces or a comma+space sequence do not produce empty elements in the results.
The suggestion to use
.split(/[ ,]+/) is good, but with natural sentences sooner or later you’ll end up getting empty elements in the array. e.g.
['foo', '', 'bar'].
Which is fine if that’s okay for your use case. But if you want to get rid of the empty elements you can do:
var str = 'whatever your text is...'; str.split(/[ ,]+/).filter(Boolean);
you can use regex in order to catch any length of white space, and this would be like:
var text = "hoi how are you"; var arr = text.split(/\s+/); console.log(arr) // will result : ["hoi", "how", "are", "you"] console.log(arr) // will result : "are"
"my, tags are, in here".split(/[ ,]+/)
the result is :
["my", "tags", "are", "in", "here"]
\s* matches zero or more white space characters (not just spaces, but also tabs and newlines).
[\s,] matches one white space character or one comma
If you want to avoid blank elements from input like
"foo,bar,,foobar", this will do the trick:
+ matches one or more of the preceding character or group.
?after comma which matches zero or one comma.
Turns out edit 1 was a mistake. Fixed it. Now there has to be at least one comma or one space for the expression to find a match.
When I want to take into account extra characters like your commas (in my case each token may be entered with quotes), I’d do a string.replace() to change the other delimiters to blanks and then split on whitespace.