Ruby 我如何分开一个字符串?

Ruby 我如何分开一个字符串?,ruby,Ruby,如果我有一个包含如下结构数据的文件: unknown|0 Action|1 Adventure|2 Animation|3 ... 如何将“|”前面的字符串和后面的数字分开,以便创建如下哈希: {"unknown"=> 0, "Action" => 1...} 太难看了,但它能用 h=Hash[*s.chomp.split("\n").map{|i| i.split("|")}.flatten] String#split是你的朋友: s = "unknown|

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

unknown|0   
Action|1  
Adventure|2  
Animation|3  
...
如何将“
|
”前面的字符串和后面的数字分开,以便创建如下哈希:

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

太难看了,但它能用

h=Hash[*s.chomp.split("\n").map{|i| i.split("|")}.flatten]
String#split
是你的朋友:

s = "unknown|0"
key, value = s.split("|")
hash = { key => value }
或者,如果您更喜欢少键入,多混淆:

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


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

我认为最简单的方法是:

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

给定文件/tmp/foo,您可以将整个文件解析为一行散列,如下所示:

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

它的可读性不是很好,但很有效。

我想你可以逐行迭代文件,然后用
拆分每一行。拆分(“|”)
。它将返回
unknown
0