2012-04-03 85 views
0

我需要排序的以下排序子陣列,任何想法被理解:如何在紅寶石

a=[ 
    ["****************1************","20120210 08:04:05,404 DEBUG MQReceiver - Receive message "<FIXML>","\n"], 
    ["****************3************","20120210 08:04:00,404 DEBUG MQReceiver - Sent message "<FIXML>","\n"], 
    ["****************2************","20120210 08:03:05,404 DEBUG MQReceiver - Allocated message "<FIXML>","\n"], 
] 

如何可以按時間或按步驟1,2,3-通常a.sort這個數組進行排序{ | X,Y | X < => Y}這裏

+1

「通過時間或通過步」是沒有意義的(考慮擴大解釋和/或輸入+結果)。另外,sort {| x,y | x <=> y}'最好寫成'sort'。不過,我想你想做一些事情,比如'sort {| x,y | x [1] <=> y [1]}'或使用'sort_by {| e | e [1]}'等。 – 2012-04-03 22:47:59

回答

2

如果你想用兩個標準來排序不工作,做

a.sort_by do |item| 
    time = parse_time_from_string(item[1]) 
    step = parse_step_from_string(item[0]) 
    [time, step] 
end 
+0

a.sort_by {| e | e [1]} - 偉大的工作,其餘的沒有產生正確的結果。**************** 1 ************ 20120210 08:04:05,404調試MQReceiver - 接收消息 **************** 2 ************ 20120210 08:03: 05,404調試MQReceiver - 分配消息 **************** 4 ************ 20120210 08:04:00,404 DEBUG MQReceiver - 已發送消息' – 2012-04-04 21:10:26

+0

非常感謝 - 我花了2個月時間排序 – 2012-04-05 20:36:29