-1

ファイルのセットに次のような名前が付けられているユースケースがあります。

`a1@1x.jpg, a2@1x.jpg, a3@1x.jpg....a10@1x.jpg, a11@1x,jpg,a12@1x.jpg.... a99@1x.jpg,a100@1x.jpg`

これを配列で読み取ると、順序が次のようになります(files=Dir.entries("./pics").grep(/^#{fileNamePattern}[0-9]/))

["a1@1x.jpg", "a10@1x.jpg", "a11@1x.jpg".... "a2@1x.jpg", "a20@1x.jpg"...] and so on

この配列を「 a」の後の数字に基づいて昇順にソートしたい

["a1@1x.jpg", "a2@1x.jpg", "a3@1x.jpg"...."a10@1x.jpg", "a11@1x.jpg","a12@1x.jpg"...."99@1x.jpg","a100@1x.jpg"]
4

2 に答える 2

3
files.sort_by{|f| f[/\d+/].to_i}
于 2013-02-05T11:57:23.797 に答える
0

試す

files=Dir.entries("./pics").grep(/^#{fileNamePattern}[0-9]/)
files = files.sort_by do |f| 
  f =~ /^{#fileNamePattern}(\d*)/   # Match filename, extracting number
  $1.to_i                           # Convert extracted number-string to integer
end
于 2013-02-05T11:35:48.090 に答える