Ruby .split行为不一致

时间:2017-11-01 15:29:52

标签: ruby

假设我有这个:

a = "|hello"

如果我这样做:

a.split("|") #=> ["", "hello"]

现在说我有:

b = "hello|"

如果我这样做:

b.split("|") #=> ["hello"]

为什么会这样?我期望结果为["hello", ""],类似于第一个例子。这是split方法工作不一致。或者我的内心工作有什么我不知道的?

1 个答案:

答案 0 :(得分:9)

documentation

中描述了此行为
  

如果省略limit参数,则尾随空字段为   抑制。

如果您想保存尾随空字符串,只需添加正面或负面限制,作为文档提供:

"hello|".split('|', 2)
 #=> ["hello", ""]
"hello|||".split('|', -1)
 #=> ["hello", "", "", ""]

请注意

  

如果为负数,则返回的字段数没有限制,并且不会抑制尾随空字段。