From: Ed Date: 2008-02-22T03:29:55+09:00 Subject: Re: Simple array of strings sorting On Feb 21, 1:14 pm, Andrew Stewart wrote: > On 21 Feb 2008, at 17:55, Ed wrote: > > > > > Say I have an array of strings that looks like this: > > test-3 > > test-31 > > test-11 > > test-12 > > test-13 > > test-32 > > test-10 > > test-14 > > > I want them sorted like so: > > test-3 > > test-10 > > test-11 > > test-12 > > test-13 > > test-14 > > test-31 > > test-32 > > > arr.sort doesn't seem to work the way I need. Any help? > > It's sorting lexicographically rather than numerically. Try this > instead: > > arr.sort_by { |x| x.split('-').last.to_i } > > In IRB: > > >> arr = %w( test-3 test-31 test-11 test-12 test-13 test-32 test-10 > test-14 ) > => ["test-3", "test-31", "test-11", "test-12", "test-13", "test-32", > "test-10", "test-14"] > >> arr.sort > => ["test-10", "test-11", "test-12", "test-13", "test-14", "test-3", > "test-31", "test-32"] > >> arr.sort_by { |x| x.split('-').last.to_i } > => ["test-3", "test-10", "test-11", "test-12", "test-13", "test-14", > "test-31", "test-32"] > > Regards, > Andy Stewart > > -------http://airbladesoftware.com Works perfectly. Thanks a lot.