Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby string.split方法返回数组中的垃圾_Ruby_Regex_Split - Fatal编程技术网

Ruby string.split方法返回数组中的垃圾

Ruby string.split方法返回数组中的垃圾,ruby,regex,split,Ruby,Regex,Split,我试着把一根绳子分成三组。希望有人能在下面的代码中解释为什么数组在结果中包含垃圾 "1234567890".split(/(\d{3})/) # => ["", "123", "", "456", "", "789", "0"] 我知道最好使用扫描来获得分组,我只是对这种特定情况感到好奇。这与分组有关,比较简单的版本: "12:

我试着把一根绳子分成三组。希望有人能在下面的代码中解释为什么数组在结果中包含垃圾

"1234567890".split(/(\d{3})/)
# => ["", "123", "", "456", "", "789", "0"] 

我知道最好使用扫描来获得分组,我只是对这种特定情况感到好奇。

这与分组有关,比较简单的版本:

"12:34:56:78:90".split(/(:)/)
=> ["12", ":", "34", ":", "56", ":", "78", ":", "90"]

"12:34:56:78:90".split(/:/)
=> ["12", "34", "56", "78", "90"]
通常使用split函数时,分隔符不在结果中。分组参数使其在结果中保留分隔符。如果没有这些组,您将有:

"1234567890".split(/\d{3}/)
=> ["", "", "", "0"]
这是有道理的,在最后一个
0
之前,分隔符之间没有任何内容。然后,当您添加分组时,它将分隔符与“中间”分隔,这是通常的拆分结果。空字符串不是废品,而是数字组

最后,在实际研究了这些问题之后,我们读到:

如果模式是一个Regexp,str将在模式匹配的地方被分割。只要模式匹配长度为零的字符串,str就会被拆分为单个字符。如果模式包含组,那么相应的匹配项也将在数组中返回


哈哈,在答案已经给出之后,怎么能把它标记为“不清楚你在问什么”呢?