我试图将一个字符串分成三个一组.希望有人可以在下面的代码中解释为什么数组包含结果中的废料.
"1234567890".split(/(\d{3})/)
# => ["", "123", "", "456", "", "789", "0"]
Run Code Online (Sandbox Code Playgroud)
我知道最好使用扫描来获得群组,我只是对这种特殊情况感到好奇.
它与您的分组有关,比较一个更简单的版本:
"12:34:56:78:90".split(/(:)/)
=> ["12", ":", "34", ":", "56", ":", "78", ":", "90"]
"12:34:56:78:90".split(/:/)
=> ["12", "34", "56", "78", "90"]
Run Code Online (Sandbox Code Playgroud)
通常使用split函数,分隔符将不在结果中.分组parens使它在结果中保留分隔符.如果没有这些团体,您将拥有:
"1234567890".split(/\d{3}/)
=> ["", "", "", "0"]
Run Code Online (Sandbox Code Playgroud)
这是有道理的,直到最后一个分隔符之间没有任何东西0.然后,当您添加分组时,它会在分隔符之间插入分隔符的"中间"分隔符.空字符串不是废品,数字组是.
最后,实际看了文档,我们读到:
如果pattern是Regexp,则str在模式匹配的位置被划分.只要模式匹配零长度字符串,str就会分成单个字符.如果pattern包含组,则相应的匹配也将在数组中返回.
| 归档时间: |
|
| 查看次数: |
590 次 |
| 最近记录: |