或るプログラマの開発日記

日々の勉強したことの備忘録なんかに使っていきます

Rubyで書式付き出力を行う

Rubyの書式付き出力に関するメモ。

Rubyの書式付き出力

C言語なんかでもみるsprintfメソッドを使うやり方と、%演算子を使うやり方があります。先ずは%演算子を使う例を見てみます。

プログラム

(1..10).each do |n|
  puts "%03d" % n
end

実行結果

001
002
003
004
005
006
007
008
009
010

このプログラムの"%03d" % nは、sprintf("%03d", n)と同じ意味になります。

個人的には、%の演算というと、どうも剰余を求めている様な感じがするので違和感ありまくりでしたが、演算子が文字列にかかっているか、数値にかかっているかの違いと理解すれば良いのでしょうか。

因みに、複数の書式を一度に扱う例は以下の通り。

puts "100 to bin ->%b  ,oct->%o  ,hex->%X" % [100,100,100]
#=>100 to bin ->1100100  ,oct->144  ,hex->64

puts sprintf("100 to bin ->%b  ,oct->%o  ,hex->%X", 100,100,100)
#=>100 to bin ->1100100  ,oct->144  ,hex->64

雑感

CやJavaに慣れてるとRubyのプログラムは%:とか@が普段見慣れない使われ方をするので混乱しがちです。ま、丁寧に個々の意味を読み解いていくしかないのでしょうな。