为什么拆分字符串不一致?

时间:2015-04-24 16:36:39

标签: ruby string split

检查:

"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]

上执行任何字符串方法

为什么在边缘或空字符串上发生的分割不一致?

1 个答案:

答案 0 :(得分:6)

文档很好地解释了这一点:http://ruby-doc.org/core-2.2.0/String.html#method-i-split

  

如果省略limit参数,则禁止尾随空字段。如果limit是正数,则最多为该数   将返回字段(如果limit为1,则返回整个字符串   作为数组中的唯一条目)。如果是否定的,则没有限制   返回的字段数,而不是尾随空字段   抑制。

所以,这就是你所期望的:

"test.".split(".", -1)
 => ["test", ""]

其余的都在文档中。