我想对表示数字范围的字符串数组进行排序,如下所示:
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"]
答案 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