检查:
"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]上执行任何字符串方法
为什么对于边缘上发生的分裂,或者对于空字符串,这是不一致的?
发布于 2015-04-24 16:42:01
文档很好地解释了这一点:http://ruby-doc.org/core-2.2.0/String.html#method-i-split
如果省略限制参数,则会抑制尾空字段。如果极限是正数,最多会返回该数目的字段(如果限制为1,则整个字符串作为数组中的唯一条目返回)。如果为负数,则不限制返回字段的数量,也不抑制尾空字段。
所以,这做了你所期望的:
"test.".split(".", -1)
=> ["test", ""]其余的都在文档里。
https://stackoverflow.com/questions/29852905
复制相似问题