繁体   English   中英

如何在 Ruby 的新行中打印数组的一些元素?

[英]How to print some elements of an array in a new line in Ruby?

我有一个输出数组的 Ruby 脚本:

arr = ["filename1", integer1, integer2, "filename2", integer3, integer4, "filename3", integer5, integer6 ...]

我需要的是这个数组更具可读性; 我想在一行中只打印三个元素,所以:

"filename1", integer1, integer2,
"filename2", integer3, integer4,
"filename3", integer5, integer6,

我设法得到一个带有arr.each_slice(3).to_a的 arrays 数组:

arr = [["filename1", integer1, integer2], ["filename2", integer3, integer4], ["filename3", integer5, integer6] ...]

但我仍然无法将数组的每个数组打印在单独的行中。

有没有办法做到这一点?

理想的 output 看起来像这样:

filename1: integer1, integer2
filename2: integer3, integer4
filename3: integer5, integer6

但我知道在filename后添加冒号是另一个问题,我可能不得不玩join()

正如您正确理解的那样,第一步确实是.each_slice(3) 我假设arr已经是切片数组。

一个简单的选择是将它们用逗号连接在一起。

arr.each do |elements|
   puts elements.join(', ')
end

如果您希望用于连接的字符不同,则不能使用连接,但字符串插值很容易。

arr.each do |filename, integer1, integer2|
   puts "#{filename}: #{integer1}, #{integer2}"
end

这将打印字符串内容。 如果这就是你想要的,那么你就完成了。 如果您还想在字符串周围包含引号,我建议在显示之前对其调用.inspect

arr.each do |elements|
   puts elements.map(&:inspect).join(', ')
end
arr.each do |filename, integer1, integer2|
   puts "#{filename.inspect}: #{integer1}, #{integer2}"
end

可以使用 [%] 方法来格式化数组1

arr.each_slice(3){|trio| puts "%s: %d, %d" % trio}

Just use the each_slice method of the Enumerator class to split your original array into arrays that consist of five elements each and the join method of the Array class to convert the five element arrays to strings:

 arr.each_slice(3) { |x|
 puts x.join(', ')
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM