如何在Ruby中将哈希值格式化为逗号分隔的文本?

如何在Ruby中将哈希值格式化为逗号分隔的文本?,ruby,hash,Ruby,Hash,我有一个类似于: hash = {0 => ["a","b", "c"], 1 => ["x", "y", "z"]} 我想格式化此散列,使每个数组都位于新行上,元素不带引号,用逗号分隔: a, b, c x, y, z 我试过: array = hash.values #=> [["a","b", "c"], ["x", "y", "z"]] array.each.join(", ") #=> "a, b, c, x, y, z" 但是c后面有一个额外的逗号。如

我有一个类似于:

hash = {0 => ["a","b", "c"], 1 => ["x", "y", "z"]}
我想格式化此散列,使每个数组都位于新行上,元素不带引号,用逗号分隔:

a, b, c
x, y, z
我试过:

array = hash.values
#=> [["a","b", "c"], ["x", "y", "z"]]

array.each.join(", ")
#=> "a, b, c, x, y, z"

但是
c
后面有一个额外的逗号。如何将阵列拆分为两行?

您就快到了,请尝试以下操作

hash.values.map{ |v| v.join(',') }.join("\n")

你就快到了,试试下面的方法

hash.values.map{ |v| v.join(',') }.join("\n")

一种方法是:

hash.values.each_with_object(""){ |v, str| str << "\n" << v.join(', ') }.strip
#=> "a, b, c\nx, y, z"
或:


请注意,
\n
应该使用双引号(
“\n”
)才能使用换行符。

一种方法是:

hash.values.each_with_object(""){ |v, str| str << "\n" << v.join(', ') }.strip
#=> "a, b, c\nx, y, z"
或:


请注意,
\n
应该使用双引号(
“\n”
)才能使用换行符。

如果您尝试使用CSV,不要尝试自制,它比看起来更复杂。例如,有时引用是必要的

require 'csv'
puts CSV.generate { |csv|
  hash.each_value { |row| csv << row }
}
# => a,b,c
#    x,y,z
需要“csv”
放置CSV.generate{| CSV|
hash.each|u值{|行| csv a、b、c
#x,y,z

如果你想制作CSV,不要尝试自制,它比看起来更复杂。例如,有时引用是必要的

require 'csv'
puts CSV.generate { |csv|
  hash.each_value { |row| csv << row }
}
# => a,b,c
#    x,y,z
需要“csv”
放置CSV.generate{| CSV|
hash.each|u值{|行| csv a、b、c
#x,y,z

如果您只担心输出,您可以在加入每个数组后使用
puts
。您是否试图生成CSV数据?我实际上是在Rails中渲染它)@anndrew78在这种情况下,

而不是
\n
可能是您寻找的“新线”@engineersmnky在这种情况下,你有一个很好的例子如何使用
吗?如果你只担心输出,你可以在加入每个数组后使用
puts
。你是在尝试生成CSV数据吗?我实际上是在Rails中渲染它)@anndrew78在这种情况下

而不是
\n
可能是你想要的这是一条“新线”@enginersmnky你有一个很好的例子,在这种情况下如何使用