如果我尝试
"my, tags are, in here".split(" ,")
我得到以下
[ 'my, tags are, in here' ]
我想要
['my', 'tags', 'are', 'in', 'here']
答案 0 :(得分:193)
String.split
也可以接受正则表达式:
input.split(/[ ,]+/);
这个特殊的正则表达式在一个或多个逗号或空格的序列上分裂,以便例如多个连续的空格或逗号+空格序列不会在结果中产生空元素。
答案 1 :(得分:36)
使用.split(/[ ,]+/)
的建议很好,但是迟早会使用自然句子,你最终会得到数组中的空元素。例如['foo', '', 'bar']
。
如果您的用例没问题,那该怎么办?但是如果你想摆脱那些你可以做的空元素:
var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);
答案 2 :(得分:23)
你可以使用正则表达式来捕获任何长度的空白区域,这就像:
var text = "hoi how are you";
var arr = text.split(/\s+/);
console.log(arr) // will result : ["hoi", "how", "are", "you"]
console.log(arr[2]) // will result : "are"
答案 3 :(得分:12)
"my, tags are, in here".split(/[ ,]+/)
结果是:
["my", "tags", "are", "in", "here"]
答案 4 :(得分:3)
input.split(/\s*[\s,]\s*/)
... \s*
匹配零个或多个空格字符(不仅是空格,还包括标签和换行符)。
... [\s,]
匹配一个空白字符或一个逗号
如果你想避免像"foo,bar,,foobar"
这样的输入中出现空白元素,这就可以解决问题:
input.split(/(\s*,?\s*)+/)
+
匹配前面一个或多个字符或组。
编辑:
在逗号后添加?
,其中匹配零或一个逗号。
编辑2:
结果编辑1是一个错误。固定它。现在,表达式必须至少有一个逗号或一个空格才能找到匹配项。
答案 5 :(得分:1)
当我想考虑你的逗号之类的额外字符时(在我的情况下,每个标记可以用引号输入),我会做一个string.replace()来将其他分隔符更改为空白然后拆分空格