如何分隔字符串?

时间:2012-06-14 03:24:26

标签: ruby

如果我的文件包含如下结构的数据:

unknown|0   
Action|1  
Adventure|2  
Animation|3  
...

如何将“|”前面的字符串和后面的数字分开,以便我可以创建一个哈希:

{"unknown"=> 0, "Action" => 1...}

4 个答案:

答案 0 :(得分:3)

String#split是你的朋友:

s = "unknown|0"
key, value = s.split("|")
hash = { key => value }

或者,如果您希望输入更少的内容并进行更多的混淆:

Hash[*s.split("|")]

修改

显然这不涉及从文件中读取行。

答案 1 :(得分:1)

SOOO丑陋但它有效!

h=Hash[*s.chomp.split("\n").map{|i| i.split("|")}.flatten]

答案 2 :(得分:1)

我认为最容易遵循的是:

hash = {}  
data.each_line do |line|
  split = line.split('|')
  hash[split[0]] = split[1]
end

答案 3 :(得分:1)

鉴于文件 / tmp / foo ,您可以将整个文件解析为一行中的哈希,如下所示:

Hash[*IO.readlines('/tmp/foo').map(&:chomp).collect { |l| l.split('|') }.flatten]

它不是非常易读,但它确实有用。