按内容计算的最高值对数组进行排序

时间:2012-02-01 16:47:22

标签: ruby arrays sorting

我有一个像这样的字符串数组:

  

[“巴西(62)”,“巴勒斯坦领土占领(6)”,“马其顿(2)”,   “德国(6)”]

我想用最高价值对它们进行排序,但这让我很难过。我尝试过各种奇怪,精彩(无用)的东西,如:

cont.sort! { |it| it.scan(/\d+/).to_s.to_i}

1 个答案:

答案 0 :(得分:6)

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#[]已在评论中提出。