如何在 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
:
arr = [["filename1", integer1, integer2], ["filename2", integer3, integer4], ["filename3", integer5, integer6] ...]
但我还是不能让数组的每个数组都打印在单独的一行中。
有办法吗?
理想的输出应该是这样的:
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}
我有一个 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
:
arr = [["filename1", integer1, integer2], ["filename2", integer3, integer4], ["filename3", integer5, integer6] ...]
但我还是不能让数组的每个数组都打印在单独的一行中。
有办法吗?
理想的输出应该是这样的:
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}