如何用空格或逗号拆分字符串

How to split a string by white space or comma?

本文关键字:拆分 字符串 何用 空格      更新时间:2023-09-26

如果我尝试

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

我得到以下内容

[ 'my, tags are, in here' ]

而我想要

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

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

input.split(/[ ,]+/);

这个特定的正则表达式在一个或多个逗号或空格的序列上拆分,因此例如多个连续空格或逗号+空格序列不会在结果中产生空元素。

您可以使用正则表达式来捕获任意长度的空格,如下所示:

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" 

使用.split(/[ ,]+/)的建议很好,但是对于自然句子,您迟早会在数组中获得空元素。 例如 ['foo', '', 'bar'] .

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

var str = 'whatever your text is...';
str.split(/[ ,]+/).filter(Boolean);
"my, tags are, in here".split(/[ ,]+/)

结果是 :

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

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

's*匹配零个或多个空格字符(不仅是空格,还包括制表符和换行符)。

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

当我想考虑逗号等额外字符时(在我的情况下,每个标记都可以用引号输入),我会做一个 string.replace() 将其他分隔符更改为空白,然后在空格上拆分。

当您需要使用一些字符分隔符拆分字符串时,请考虑使用反向逻辑:匹配由分隔符字符以外的字符组成的字符串块。

因此,要提取除空格(与's匹配)和逗号以外的所有字符块,您可以使用

console.log("my, tags are, in here".match(/[^'s,]+/g))
// => ["my","tags","are","in","here"]

请参阅正则表达式演示。 String#match提取除空格和逗号([^'s,]之外的一个或多个(+)字符的所有非重叠匹配项。