排序范围值

时间:2014-04-08 11:26:33

标签: ruby sorting

我想对表示数字范围的字符串数组进行排序,如下所示:

b = ["0-5", "100-250", "5-25", "50-100", "250-500", "25-50"]

使用我得到的sort方法:

b.sort 
# => ["0-5", "100-250", "25-50", "250-500", "5-25", "50-100"]

我想要这样:

["0-5, "5-25", "25-50", "50-100", "100-250", "250-500"]

3 个答案:

答案 0 :(得分:15)

尝试:

b.sort_by { |r| r.split('-').map(&:to_i) }
# => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"] 

此解决方案将每个项目("0-5")拆分为两个项目(["0", "5"]),并将它们转换为整数([0, 5])。现在按数组排序(首先是第一项,第二项是打破平局)。

答案 1 :(得分:5)

b.sort_by { |a| a.split('-').first.to_i }

=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]

答案 2 :(得分:5)

b.sort_by(&:to_i)
  #=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]

,因为

"25-50".to_i #=> 25