2014-05-03 224 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]}' –