如何在Ruby中将数组数组转换为一个字符串[关闭]
Posted
技术标签:
【中文标题】如何在Ruby中将数组数组转换为一个字符串[关闭]【英文标题】:How can I transform array of arrays into one string in Ruby [closed] 【发布时间】:2013-12-22 16:24:42 【问题描述】:我有一个数组,如下所示:
arr = [[0,0,0,0,0], [0,0,1,0,0], [0,1,0,1,0], [0,0,1,0,0], [0,0,0,0,0]]
我想让它看起来像这样:
00000
00100
01010
00100
00000
我试过这样:
arr.each |a| p a.join(',').gsub(',','')
但它的输出是这样的:
00000
00100
01010
00100
00000
在每行的开头和结尾加上引号'""'。我希望它是一个单件,以引号开头,然后是行,最后是引号。但不要引用每一行。
【问题讨论】:
输出有什么区别? 我有 5 个由 .each 生成的单独字符串,而不是一个完整的字符串 那你需要一个字符串吗? 【参考方案1】:试试
arr.map |a| a.join.join("\n")
【讨论】:
OP 在自己的行中要求每个项目;你想要join("\n")
。另外,请注意.join("")
与.join
相同。
感谢您的建议。我已经更新了答案。【参考方案2】:
join
不带参数:
arr.each|el| puts el.join
【讨论】:
正是我想要的!谢谢! 这不是所要求的。标题要求将数组转换为一个字符串。我会否决这个答案,但由于 OP cmets 这正是他们正在寻找的,并接受了这个答案,我将对这个问题投反对票并密切投票,因为接受意味着这个问题被错误地陈述了。【参考方案3】:puts arr.map(&:join)
调用map
会遍历数组(外部数组),并为每个条目调用join
方法;它返回一个新数组,其中每个条目都已被结果替换。
数组的join
method 在数组的每个部分上调用to_s
,并使用可选的分隔符将它们连接起来。不带参数调用 join
使用空字符串(无分隔符)。
在数组上调用 puts
会将每个条目打印在自己的行上。
或者,如果您希望最终结果为带有嵌入换行符的单个字符串:
str = arr.map(&:join).join("\n")
【讨论】:
+1 够了...这篇文章。以上是关于如何在Ruby中将数组数组转换为一个字符串[关闭]的主要内容,如果未能解决你的问题,请参考以下文章