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
。