2016-07-05 11 views
-1

例のデータ値:私はすべてのAさんが来るように、このソート必要ソート配列は

["A-1.jpg", "A-2.jpg", "A-10.jpg", "A-101.jpg", "B-1.jpg", "B-2.jpg"]

を第昇順、例えば内の数値'a-2'は 'a-10'の前にあり、両方とも 'b-1'の前です。

ありがとう。

+3

我々はこれを解決に向かって、あなたの努力の証拠を見てみたいと思います。コードを書きましたか?そうでない場合、なぜですか?あなたは解決策を探しましたか?どこで検索しましたか、なぜそれが役に立たなかったのですか?リンクされたページを含む「[ask]」をお読みください。あなたが試したことがないように見えるので、私たちにあなたのためにそれを書いてもらいたいのです。 –

答えて

3
arr = ["A-1.jpg", "A-10.jpg", "A-2.jpg", "A-101.jpg", "B-1.jpg", "B-2.jpg"] 
arr.sort_by { |s| first, last = s.split("-"); [first, last.to_i] } 

=> ["A-1.jpg", "A-2.jpg", "A-10.jpg", "A-101.jpg", "B-1.jpg", "B-2.jpg"] 
0
["A-1.jpg", "A-2.jpg", "A-10.jpg", "A-101.jpg", "B-1.jpg", "B-2.jpg"].sort_by{|s| s =~ /^(\w)-(\d+)\.jpg$/ && $1.ord * 1000 + $2.to_i}