From: Robert Klemme Date: 2008-10-31T17:11:33+09:00 Subject: Re: how to sort this array 2008/10/31 botp : > On Fri, Oct 31, 2008 at 5:14 AM, Li Chen wrote: >> expected results: >> [ "c:/ruby/self/2004/1.txt", >> "c:/ruby/self/2004/2.txt", >> "c:/ruby/self/2004/3.txt", >> "c:/ruby/self/2004/10.txt", >> "c:/ruby/self/2004/20.txt", >>] > > apology in advance for dupl email. i sent an email an hrs back but it > seems it got blackholed :) > > anyway, if you want basename numeric sorting, then just do > > eg, > > files.sort_by{|f| File.basename(f).to_i} Very elegant! Here's another variant irb(main):013:0> puts files.sort_by {|f| f[/\d+(?=\.txt$)/].to_i} c:/ruby/self/2004/1.txt c:/ruby/self/2004/2.txt c:/ruby/self/2004/3.txt c:/ruby/self/2004/10.txt c:/ruby/self/2004/20.txt => nil Kind regards robert -- remember.guy do |as, often| as.you_can - without end