给出以下字符串:
numbers = "4 5 29 54 4 0 -214 542 -64 1 -3 6 -6"
我想按数字顺序得到它。这是我正在使用的代码
numbers.split(' ').sort
但是,这将返回以下内容:
["-214", "-3", "-6", "-64", "0", "1", "29", "4", "4", "5", "54", "542", "6"]
为什么sort会以这种方式表现。理想情况下,数组应该有-214作为第一个整数,542作为第二个。我怎样才能做到这一点?
期望的输出:
[“ - 214”,“ - 64”,“ - 6”,“ - 3”,“0”,“1”,“4”,“4”,“5”,“6”,“26 “,”54“,”542“]
答案 0 :(得分:4)
Ruby的sort
默认为对字符串进行操作时,按照字典顺序进行排序,就像在此处所做的那样。如果要按数字顺序排序,则需要执行以下操作:
numbers.split.sort_by(&:to_i)
答案 1 :(得分:0)
这将为你解决问题。
numbers.map {| V | v.to_i} {的.sort | A,B | a< => B}