ruby中string.split(“,”, - 1)和string.split(“,”, - 4)之间有什么区别?

时间:2012-04-17 00:38:15

标签: ruby

String类的split方法状态的ruby docs

  

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

据我所知,以下任何一项都没有区别:

string="1,,2,3,,,4,,5,,6"

string.split(",", -1)
string.split(",", -4)
string.split(",", -1000000)

它们都返回相同的值:["1", "", "2", "3", "", "", "4", "", "5", "", "6"]

只是想知道为什么可以用这种方式指定不同的负面限制。

此外,如果我想删除尾随空值(如空格)会发生什么?我知道我可以做string.strip.split(",",-1)但有没有办法在不使用strip方法的情况下做到这一点?

2 个答案:

答案 0 :(得分:4)

根据您的测试和引用的文档,string.split(",", -1)string.split(",", -4)之间似乎没有区别。规范说没有区别,你发现测试没有区别。万岁。

但请注意string.strip.split(..)不会删除尾随的空值:

irb(main):003:0> string="1,,2,3,,,4,,5,,6,,,"
=> "1,,2,3,,,4,,5,,6,,,"
irb(main):004:0> string.split(",", -1)
=> ["1", "", "2", "3", "", "", "4", "", "5", "", "6", "", "", ""]
irb(main):005:0> string.strip.split(",", -1)
=> ["1", "", "2", "3", "", "", "4", "", "5", "", "6", "", "", ""]

你必须选择另一种去除空值的机制。

答案 1 :(得分:2)

Ruby通常有多种方法可以做同样的事情,甚至是语法。只需在代码中制定约定即可使用-1

你问的是如何没有限制,但是做空字段抑制吗?您可以根据文档省略limit参数。