【发布时间】:2015-08-11 13:46:37
【问题描述】:
我正在使用 RubyZip 从 Ruby 中的 zip 存档中提取文件,我需要根据文件名的特征来标记文件:
示例: 我有以下哈希:
labels = {
:data_file=>/.\.dat/i,
:metadata=>/.\.xml/i,
:text_location=>/.\.txt/i
}
所以,我有 zip 中每个文件的文件名,假设一个例子是
filename = 382582941917841df.xml
假设每个文件只会匹配labels哈希中的一个Regex,如果不匹配也没关系,只选择第一个匹配。 (在这种情况下,正则表达式都是用于检测扩展名,但也可以是检测任何文件名掩码,例如 DSC****.jpg。
我现在正在这样做:
label_match =~ labels.find {|key,value| filename =~ value}
---> label_match = [:metadata, /.\.xml/]
label_sym = label_match.nil? ? nil: label_match.first
所以这很好用,但看起来不像 Ruby。有什么我想好好清理的吗?
【问题讨论】: