有没有办法获得:
"[][][]".split('[]')
#=> ["", "", ""]
Run Code Online (Sandbox Code Playgroud)
代替
#=>[]
Run Code Online (Sandbox Code Playgroud)
无需编写功能?
这种行为令人惊讶,因为有时irb会按预期响应:
"[]a".split('[]')
#=>["", "a"]`
Run Code Online (Sandbox Code Playgroud)
来自文档:
如果省略limit参数,则禁止尾随空字段.如果限制是一个正数,至多字段的这个数字将被返回(如果限制是
1,整个字符串返回为在阵列中的唯一的条目).如果为负数,则返回的字段数没有限制,并且不会抑制尾随空字段.
所以:
"[][][]".split("[]", -1)
# => ["", "", "", ""]
Run Code Online (Sandbox Code Playgroud)
这会产生四个空字符串,而不是你的三个字符串,但如果你考虑它,这是唯一有意义的结果.如果你,,,在每个逗号上拆分,你也会得到四个空字符串,因为在第一个逗号"之前"有一个空项,而在最后一个之后有一个"之后".