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