あなたはすべてのGIFを検索する場合:
それらを実行
def get_all_jpgs(files)
files.select{ |i| i[/\.jpe?g$/] }
end
:
files = %w[foo.gif bar.jpg foo.jpeg bar.gif]
get_all_gifs(files) # => ["foo.gif", "bar.gif"]
get_all_jpgs(files) # => ["bar.jpg", "foo.jpeg"]
しかし、待って、あなたがすべてのJPEGファイルを検索する場合
def get_all_gifs(files)
files.select{ |i| i[/\.gif$/] }
end
を!もっとたくさん!あなたはそのタイプによってグループにそれらすべてをしたい場合は、その拡張子に基づいて抽出何
?:
def get_all_images_by_type(files)
files.group_by{ |f| File.extname(f) }
end
ここでは、ファイルの種類だ:ここで
get_all_images_by_type(files).keys # => [".gif", ".jpg", ".jpeg"]
は、特定のタイプをつかむ方法です:
get_all_images_by_type(files) # => {".gif"=>["foo.gif", "bar.gif"], ".jpg"=>["bar.jpg"], ".jpeg"=>["foo.jpeg"]}
get_all_images_by_type(files)['.gif'] # => ["foo.gif", "bar.gif"]
get_all_images_by_type(files).values_at('.jpg', '.jpeg') # => [["bar.jpg"], ["foo.jpeg"]]
あなたはどのようになっているファイル名を使用しますか? 'Dir.glob( '* .jpe?g')' –
を使用して名前を取得するときに、ディスクからフィルタリングできる場合は、ほとんどの人が私の質問を誤解していると思います。この例はあまりにも負荷がかかるかもしれません。これは、イメージやファイル名やファイル拡張子に関するものではありません。配列のフィルタリング、それを行うメソッドのよりよいイディオムについてです。 – allanberry