[英]Print hash in ruby with indentation for each line
我正在嘗試以以下格式在ruby中打印字符串和整數的哈希值:
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
puts x
輸出應如下所示:
abc 12
abcdef 44
sryyy 5
我可以獲得每個字符串的最大長度,然后根據它縮進每一行,但是有沒有更簡單的方法呢? 還是已經有這樣做的方法?
或稍作更新@engineersmnky,您可以通過以下方式實現:
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
x.each do |key, value|
p "#{key.rjust(x.keys.max_by(&:length).length)} #{value}"
end
> abc 12
> abcdef 44
> sryyy 5
給出這個例子。 我認為只要找到最大長度並使用sprintf填充即可,例如
def justified_printing_hash(h)
max_length = h.keys.max_by(&:length).length
h.each {|k,v| puts sprintf("%<key>#{max_length}s %<value>d",{key:k,value:v}) }
end
用法為
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
justified_printing_hash(x)
abc 12
abcdef 44
sryyy 5
#=> {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.