LoginSignup
2
4

More than 3 years have passed since last update.

'%02d' % 2 のパーセントとは?

Posted at

'%02d' % 2

ruby で 数字の 2 を '02' と記述したい時、'%02d' % 2 のような構文を書きますよね。
引数に対して 0埋めをおこなってstringで返すという方法ですが、こちらの % とか 02 とか d って一体なんなんでしょうか?

% って何?

ruby では % という記法に様々な意味があります。

  1. 剰余を表す「%」 例: 5 % 3 => 2
  2. Stringクラスの「%」演算子 例: "%02d" % 2 => "02"
  3. リテラル記法の「%」演算子 例: %w(dog cat monkey) => ["dog", "cat", "monkey"]
  4. コマンドラインへの入力を示す 例: %x[ DATE ] => "2020年 6月24日 水曜日 09時31分57秒 JST\n"

上記のような種類があります。
参考: Rubyで使われる記号の意味(正規表現の複雑な記号は除く)

先に示した、'%02d' % 2 という構文は、上記の例でいうと 2. Stringクラスの「%」演算子 にあたりますね!

02 とか d って一体なんなんでしょうか?

d は引数の型を示す「指示子」の中の一つです。
d は 10進数の整数 (Decimal number) を表しています。
指示子は他にも、文字列を表すものや浮動小数点を表すもの、指数表現を表すものなどがあります。

02 は 0 と 2 に分解することができ、それぞれ「フラグ」「幅」を示しています。
「フラグ」にもいくつか種類があるのですが、 0 は余白を 0で埋めるという意味になります。
「幅」はそのまま、出力時の長さを指定します。

これらをまとめると、'%02d' % 2 という記法は、

'%0(余白は0で埋めてくださいね〜)2(出力時の長さは2ですよ)d(引数を10進数の整数で表してくださいね' %(Stringクラスの%演算子ですよ〜) 2(引数は2ですよ!)

という意味が込められている事になります。

おわりに

引数は配列で渡す事もできますので、
「10進数で表している色コードを16進数の色コードに変換したいよ」という時には、
'%02x%02x%02x' % [255, 255, 255] => "ffffff" と書く事ができます!

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4