From: Jos Backus Date: 2006-12-21T14:27:58+09:00 Subject: Re: tricky sort for happy visitors of Paris On Thu, Dec 21, 2006 at 08:05:06AM +0900, William James wrote: > Jos Backus wrote: > > More generally: > > > > lizzy:~% irb > > irb(main):001:0> arrondissements = ["Paris 1", "Paris 2","Paris 4", "Paris 3", "Lyon 2", "Lyon 1"] > > => ["Paris 1", "Paris 2", "Paris 4", "Paris 3", "Lyon 2", "Lyon 1"] > > irb(main):002:0> sorted_array = arrondissements.sort_by {|e| [e.split(" ")]} > > => ["Lyon 1", "Lyon 2", "Paris 1", "Paris 2", "Paris 3", "Paris 4"] > > irb(main):003:0> % lizzy:~% > > > > -- > > Jos Backus > > jos at catnook.com > > Won't work for > > arrondissements = "Paris 1", "Paris 2","Paris 12", "Paris 3", > "Lyon 2", "Lyon 1" > > For the 2nd field, you need a numeric comparison. > > p arrondissements.sort_by {|e| e.split.inject{|a,b| [a,b.to_i] } } Oops, you're right, I missed that. Clever use of inject, by the way. -- Jos Backus jos at catnook.com