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

Hoa*_*Hoa 111 javascript

如果我试试

"my, tags are, in here".split(" ,")
Run Code Online (Sandbox Code Playgroud)

我得到以下内容

[ 'my, tags are, in here' ]
Run Code Online (Sandbox Code Playgroud)

而我想要的

['my', 'tags', 'are', 'in', 'here']
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 206

String.split 也可以接受正则表达式:

input.split(/[ ,]+/);
Run Code Online (Sandbox Code Playgroud)

该特定正则表达式在一个或多个逗号或空格的序列上分裂,使得例如多个连续空格或逗号+空格序列不在结果中产生空元素.

  • 怎么样`/,?\ s + /`? (19认同)
  • +1我知道这有点旧,但为什么要使用空格而不是`\ s`.我可能在blob中有一些换行符,`\ s`也会处理这些换行符. (11认同)
  • FACEPALM注意:不要在正则表达式周围加上引号.例如,不要使用`input.split("/ [,] + /)"`.保留引号(`input.split(//)`而不是`input.split("//")`),你将获得更好的体验.因为奇怪的是,这可能只适用于*本身*(生成`["input.split(\"",")\""]`). (5认同)
  • @Bergi:嗯,它比我建议的更严格(前面只允许一个逗号),并且比OP要求的更松散(在所有空格上分开).恕我直言,这将更糟糕 - 考虑输入`空格,在逗号之前. (4认同)

jon*_*ert 38

使用的建议.split(/[ ,]+/)很好,但是迟早会使用自然句子,你最终会得到数组中的空元素.例如['foo', '', 'bar'].

如果你的用例没问题,这很好.但是如果你想摆脱空元素你可以做:

var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常巧妙地使用本机对象隐式构造函数 - 我的计算机键盘今天早上很疯狂 - 我稍后会编辑这个注释 - 但是点调用布尔像'Boolean()'将构造一个新的[object Boolean]实例false的值,就像调用'new Boolean()'一样.这将过滤掉所有匹配到此默认行为.好一个 :) (6认同)
  • `"foo, bar,,foobar,".split(/[\s,]+/)` 返回 `["foo", "bar", "foobar", ""]`(因为在完),谢谢! (2认同)

小智 26

你可以使用正则表达式来捕获任何长度的空白区域,这就像:

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" 
Run Code Online (Sandbox Code Playgroud)

  • 使用“/\s+/”时请注意前导/尾随空格。例如, `'abc '.split(/\s+/) === [ 'a', 'b', 'c', '' ]`。如果你先`.trim()`字符串,你会很好。 (4认同)

gab*_*ish 12

"my, tags are, in here".split(/[ ,]+/)
Run Code Online (Sandbox Code Playgroud)

结果是:

["my", "tags", "are", "in", "here"]
Run Code Online (Sandbox Code Playgroud)


Kap*_*old 9

input.split(/\s*[\s,]\s*/)

...\s*匹配零个或多个空白字符(不仅是空格,还有制表符和换行符)。

...[\s,]匹配一个空格字符或一个逗号

  • @KaptajnKold 哦,我没听懂,谢谢您的回答! (2认同)