4
我有字符串的一个这样的数组:排序阵列从内容计算
[ “巴西(62)”, “PalestinianTerritoryOccupied(6)”, “马其顿(2)”, “德国(6)“]
我想按最高值对它们进行排序,但它让我难倒了。我已经试过各种怪异,精彩(无用)之类的东西:
cont.sort! { |it| it.scan(/\d+/).to_s.to_i}
我有字符串的一个这样的数组:排序阵列从内容计算
[ “巴西(62)”, “PalestinianTerritoryOccupied(6)”, “马其顿(2)”, “德国(6)“]
我想按最高值对它们进行排序,但它让我难倒了。我已经试过各种怪异,精彩(无用)之类的东西:
cont.sort! { |it| it.scan(/\d+/).to_s.to_i}
sort_by {|e| e[/\d+/].to_i }.reverse
应该做的伎俩。你可以这样写一个更有效的和优雅的方式(见注释),如以下:
sort_by {|e| -e[/\d+/].to_i }
注意-
。
使用排序,你可以这样做:
sort {|a, b| b[/\d+/].to_i <=> a[/\d+/].to_i }
编辑
String#[]已建议中的注释。
感谢您的回复。不幸的是2和26彼此相邻 - 与1和11相同。尽管靠近! – facetoe 2012-02-01 16:56:03
是的,在每种情况下只需要在'[0]'之后用'.to_i'转换为一个整数。 – Shadwell 2012-02-01 16:59:20
我明白了。我会更新答案;) – lucapette 2012-02-01 16:59:22