排序范围值

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

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

 b.sort_by { |a| a.split('-').first.to_i } => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"] 

尝试:

 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] )。 现在按数组排序(首先是第一项,第二项是打破平局)。

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

因为

 "25-50".to_i #=> 25