【问题标题】:How can I transform array of arrays into one string in Ruby [closed]如何在Ruby中将数组数组转换为一个字符串[关闭]
【发布时间】: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 生成的单独字符串,而不是一个完整的字符串
  • 那你需要一个字符串吗?

标签: ruby string transformation text-formatting


【解决方案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 够了...这篇文章。
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
相关资源
最近更新 更多