From: William James Date: 2006-12-21T08:05:06+09:00 Subject: Re: tricky sort for happy visitors of Paris 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] } }