2012-04-03 87 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