如何在Ruby中将字符串转换为哈希?

时间:2014-08-01 12:51:08

标签: ruby hash tsv

我有一个空格分隔值的文件:

Paul Smith 12345678
John Alex Doe 23456789
Lucy S Alena Blissett 34567890

需要将其转换为这样的哈希:

{"Paul Smith"=>"12345678", "John Alex Doe"=>"23456789", "Lucy S Alena Blissett"=> "34567890"}

我可以关注these tips获取CSV格式,但有点被TSV和新行字符所困扰。

感谢您的帮助!

2 个答案:

答案 0 :(得分:6)

假设格式不是以制表符分隔的值,而是以空格分隔:

s = <<_
Paul Smith 12345678
John Alex Doe 23456789
Lucy S Alena Blissett 34567890
_

s.scan(/(.+) (.+)/).to_h

结果:

{
  "Paul Smith"            => "12345678",
  "John Alex Doe"         => "23456789",
  "Lucy S Alena Blissett" => "34567890"
}

答案 1 :(得分:1)

使用String#scan并将结果数组转换为哈希:

File.read('file').scan(/^(.*)\s+([^\s]+)\r?$/).to_h
# => {"Paul Smith"=>"12345678", "John Alex Doe"=>"23456789", "Lucy S Alena Blissett"=>"34567890"}