我有一個輸出陣列的 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().
uj5u.com熱心網友回復:
格式化陣列可以使用 [%] 方法1
arr.each_slice(3){|trio| puts "%s: %d, %d" % trio}
uj5u.com熱心網友回復:
第一步確實.each_slice(3)如您所想。我假設arr已經是切片陣列。
一個簡單的選擇是用逗號將它們連接在一起。
arr.each do |elements|
puts elements.join(', ')
end
如果您希望用于 join 的字符不同,則不能使用 join,但字串插值很容易。
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
uj5u.com熱心網友回復:
只需使用 Enumerator 類的 each_slice 方法將原始陣列拆分為每個由五個元素組成的陣列,并使用 Array 類的 join 方法將五個元素陣列轉換為字串:
arr.each_slice(3) { |x|
puts x.join(', ')
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/402916.html
標籤:
