我想对表示数值范围的字符串数组进行排序,如下所示:
b = ["0-5", "100-250", "5-25", "50-100", "250-500", "25-50"]
Run Code Online (Sandbox Code Playgroud)
使用sort我得到的方法:
b.sort
# => ["0-5", "100-250", "25-50", "250-500", "5-25", "50-100"]
Run Code Online (Sandbox Code Playgroud)
我希望它像这样:
["0-5, "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)
Uri*_*ssi 15
尝试:
b.sort_by { |r| r.split('-').map(&:to_i) }
# => ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)
此解决方案将每个item("0-5")拆分为两个items(["0", "5"]),并将它们转换为整数([0, 5]).现在按数组排序(首先是第一项,第二项是打破平局).
b.sort_by { |a| a.split('-').first.to_i }
=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)
b.sort_by(&:to_i)
#=> ["0-5", "5-25", "25-50", "50-100", "100-250", "250-500"]
Run Code Online (Sandbox Code Playgroud)
因为
"25-50".to_i #=> 25
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
357 次 |
| 最近记录: |