我创建了一个哈希来读取mime类型和扩展名。我在尝试解析像jpeg line这样的多个条目时遇到了麻烦:
image/png png
image/jpeg jpeg jpg jpe
我的代码将此读取为哈希,其中mime类型为键,扩展名为值,如下所示:
def initialize(mime_file_content)
@mime_file_content = mime_file_content
@hash = Hash.new
@mime_file_content.lines.each do |pair|
pair.chomp!
next if pair.empty?
next if pair.include? "#"
key,value = pair.split(" ",2)
@hash[key] = value
end
end
png行输出正常:
key: image/png
value: png
jpeg输出:
key: image/jpeg
value: jpeg jpg jpe
我无法弄清楚如何分隔多个jpeg扩展值,以便将它们分配给image / jpeg键。我尝试了第二次拆分:
@hash.each_value {|value| value.split(" ")}
那不起作用。有没有办法在一行上拆分多个值并将它们分配给同一个键?
答案 0 :(得分:0)
执行:
@hash.each {|k, v| @hash[k] = v.split}
或者更直接地,在您的代码中,更改行:
@hash[key] = value
到
@hash[key] = value.split
答案 1 :(得分:0)
使用splat
key,*value = pair.split(" ")
生成像这样的哈希
{"image/png"=>["png"], "image/jpeg"=>["jpeg", "jpg", "jpe"]}