1

String 类的方法状态的ruby​​ 文档:split

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

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

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方法来做到这一点?

4

2 回答 2

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

您必须选择另一种机制来去除空值。

于 2012-04-17T00:42:32.467 回答
2

Ruby 通常有不止一种方法来做同样的事情,甚至是语法。只需在您的代码中约定使用-1.

您是在问如何没有限制,但要进行空字段抑制?根据文档,您可以省略 limit 参数。

于 2012-04-17T00:41:44.773 回答