数字部分の桁数が揃っていないこういうファイル群があるとします。
- image1.jpg
- image2.jpg
- …
- image10.jpg
- image11.jpg
- …
多くの言語ではこれらを文字列として持っているArrayをソートすると普通は辞書順になるので次のような順になってしまいます。Rubyもそうです。
- image1.jpg
- image10.jpg
- image11.jpg
- …
- image2.jpg
- image20.jpg
- …
番号の若い順に処理したい場合はこれだと困るのでちょっと細工をします。
# このままだと辞書順
images = Dir.glob("image*.jpg")
# これで数字の昇順になる
image = images.sort_by{|file| file[/\d+/].to_i}