From: Andrew Stewart Date: 2008-02-22T03:14:35+09:00 Subject: Re: Simple array of strings sorting 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