簡體   English   中英

用紅寶石打印哈希,每行都有縮進

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM