如何解析哈希值?

时间:2015-09-17 07:33:03

标签: ruby hash

我创建了一个哈希来读取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(" ")}

那不起作用。有没有办法在一行上拆分多个值并将它们分配给同一个键?

2 个答案:

答案 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"]}