如何用空格或逗号分割JavaScript字符串?

时间:2012-04-27 07:44:22

标签: javascript

如果我尝试

"my, tags are, in here".split(" ,")

我得到以下

[ 'my, tags are, in here' ]

我想要

['my', 'tags', 'are', 'in', 'here']

6 个答案:

答案 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()来将其他分隔符更改为空白然后拆分空格