如果你想找到所有的GIF:
def get_all_gifs(files)
files.select{ |i| i[/\.gif$/] }
end
如果你想找到的所有JPEG文件:
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"]
別急!還有更多!
,如果你想他們都按自己的類型,然後提取基於擴展?:
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