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

fac*_*toe 4 ruby arrays sorting

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

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

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

cont.sort! { |it| it.scan(/\d+/).to_s.to_i}
Run Code Online (Sandbox Code Playgroud)

luc*_*tte 6

sort_by {|e| e[/\d+/].to_i }.reverse
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.您可以以更有效和更优雅的方式编写此文件(请参阅注释),如下所示:

sort_by {|e| -e[/\d+/].to_i }
Run Code Online (Sandbox Code Playgroud)

请注意-.

使用sort你可以做到:

sort {|a, b| b[/\d+/].to_i <=> a[/\d+/].to_i }
Run Code Online (Sandbox Code Playgroud)

编辑

注释中建议使用字符串#[].