检查:
"test.one.two".split(".") # => ["test", "one", "two"]
Run Code Online (Sandbox Code Playgroud)
对,完美.正是我们想要的.
"test..two".split(".") # => ["test", "", "two"]
Run Code Online (Sandbox Code Playgroud)
我one用空字符串替换,这样才有意义
"test".split(".") # => ["test"]
Run Code Online (Sandbox Code Playgroud)
这就是我所期望的,这里没有问题.
".test".split(".") # => ["", "test"]
Run Code Online (Sandbox Code Playgroud)
是的,我的字符串有一个,.所以我得到了两个部分.
"test.".split(".") # => ["test"]
Run Code Online (Sandbox Code Playgroud)
什么?.我的字符串中有一个,它本应分为两部分.我没有要求摆脱空字符串; 它没有在测试2或4中摆脱空字符串.
我原以为["test", ""]
"".split(".") # => []
Run Code Online (Sandbox Code Playgroud)
什么?这应该操作几乎恰好像测试3,并返回[""].但是现在我无法执行任何字符串方法result[0]
为什么在边缘或空字符串上发生的分裂不一致?
文档很好地解释了这一点:http://ruby-doc.org/core-2.2.0/String.html#method-i-split
如果省略limit参数,则禁止尾随空字段.如果limit是正数,则最多将返回该字段数(如果limit为1,则整个字符串将作为数组中的唯一条目返回).如果为负数,则返回的字段数没有限制,并且不会抑制尾随空字段.
所以,这就是你所期望的:
"test.".split(".", -1)
=> ["test", ""]
Run Code Online (Sandbox Code Playgroud)
其余的都在文档中.