我有一个字符串版本号的数组,我想对它进行排序,但在我的生活中不能让它按照我想要的方式排序:
versions = [ "1.0.4", "1.0.6", "1.0.11", "1.1.9", "1.1.10", "1.0.16" ]
versions.sort_by {|v| [v.size]}
=> ["1.0.4", "1.0.6", "1.1.9", "1.0.11", "1.1.10", "1.0.16"]
努力实现:
=> ["1.0.4", "1.0.6", "1.0.11", "1.0.16", "1.1.9", "1.1.10"]
它似乎与词典编排有关,但我在制定我需要应用的排序规则时遇到了困难。
非常感谢任何帮助或正确方向的观点。
答案 0 :(得分:13)
versions = [ "1.0.4", "1.0.6", "1.0.11", "1.1.9", "1.1.10", "1.0.16" ]
sorted = versions.sort_by {|s| s.split('.').map(&:to_i) }
sorted # => ["1.0.4", "1.0.6", "1.0.11", "1.0.16", "1.1.9", "1.1.10"]
这样做是将字符串拆分为组件并以数字方式对其进行比较。