如果我尝试
"my, tags are, in here".split(" ,")
我得到以下
[ 'my, tags are, in here' ]
而我想要
['my', 'tags', 'are', 'in', 'here']
如果我尝试
"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,]