2014-05-03 265 views
0

阵列我有以下阵列如何红宝石

arr = ["2014-05-02T19-49-55_1280x720_vga2usb.mp4", "2014-05-02T19-49-55_544x288_left_cam.mp4", "2014-05-02T19-49-55_544x288_right_cam.mp4", "2014-05-02T19-49-55_1632x288.mp4"] 

我需要排序这个数组的方式,我得到以下排序:

["2014-05-02T19-49-55_1632x288.mp4", "2014-05-02T19-49-55_544x288_left_cam.mp4", "2014-05-02T19-49-55_544x288_right_cam.mp4", "2014-05-02T19-49-55_1280x720_vga2usb.mp4"] 

我试图用某种方法arr.sortarr.sort_by{|word| word.downcase} 但它给我输出

["2014-05-02T19-49-55_1280x720_vga2usb.mp4", "2014-05-02T19-49-55_1632x288.mp4", "2014-05-02T19-49-55_544x288_left_cam.mp4", "2014-05-02T19-49-55_544x288_right_cam.mp4"] 

我怎样才能 做这个?

+0

莫非如果答案帮助你,请关闭问题。 – kasi

回答

0

试图解决这样使用:

arr.sort { |x,y| y <=> x } 

如果需要通过串排序尝试这样的事:

arr.sort { |x,y| y[m,n] <=> x[m,n]} 

编辑:这应该工作:

arr.sort do |x,y| 
    regex = /x[[:digit:]]+(.+?)$/ 
    regex.match(x)[1] <=> regex.match(y)[1] 
end 
+1

你可以将它缩短为'arr.sort_by {| x | x [/ x [[:digit:]] +(。+?)$ /,1]}' –