2015-09-17 2 views
-1

Я создал хэш для чтения в типах и расширениях mime. У меня возникли проблемы, пытаясь разобрать несколько записей, как этот Jpeg линии:Как анализировать значения в хеше?

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

Используйте знак

key,*value = pair.split(" ") 

для производства хеш-подобных

{"image/png"=>["png"], "image/jpeg"=>["jpeg", "jpg", "jpe"]} 
+0

Это сработало. Благодаря! – Semion

0

Do:

@hash.each {|k, v| @hash[k] = v.split} 

Или более непосредственно в коде, измените строку:

@hash[key] = value 

к

@hash[key] = value.split 
Смежные вопросы