使用带有正则表达式的split方法后,在数组中清空字符串

时间:2014-04-06 00:18:32

标签: javascript regex split

我正在阅读面向Web开发人员的专业JavaScript 的第5章,并且遇到了涉及split方法和正则表达式的示例。我的困惑源于变色3的输出。为什么数组在逗号前后包含空字符串?

var colorText = “red,blue,green,yellow”;
var colors1 = colorText.split(“,”); //[“red”, “blue”, “green”, “yellow”]
var colors2 = colorText.split(“,”, 2); //[“red”, “blue”]
var colors3 = colorText.split(/[^\,]+/); //[“”, “,”, “,”, “,”, “”]

1 个答案:

答案 0 :(得分:2)

在最后一种情况下,您将分隔符定义为"任何不是逗号"的字符集。

因为在第一个"分隔符"之前没有任何内容。 ("红色")并且没有任何内容跟在最后一个"分隔符" ("黄色&#34)。 Split假定第一个分隔符前面有一个值,并且最后一个分隔符后面跟着一个值 - 就像它们一样,在你的第一个和第二个例子中,以及任何正常情况下,例如a中的一行CSV文件。唯一的准例外是CSV行中的第一个(或最后一个)值是空字符串;在这种情况下,如果有一个空字符串后跟分隔符,你会看到什么?

你会在行的开头看到一个看似孤立的分隔符(或者在结尾处的分隔符)。它必须是这种方式,因为你必须支持空值。

如果你先于" red"使用逗号,您会在第一个数组中看到一个初始空字符串,并在最后一个数组中看到一个初始逗号。

我认为你的最后一个正则表达式重新定义了" separator"作为一组通常被视为数据的字符,并重新定义"数据"作为通常定义为分隔符的字符。

接受任意性。让它流过你。它们不是逗号和字母,它们是零和一个。