すがブロ

sugamasaoのhatenablogだよ

数字をゼロ詰めにするには

使わないようでたまに使いたい局面があるんだ

で、例えば二桁のゼロ詰めとかを愚直に書くとこんな感じだろうか(元々の値が文字列か数値かで変わるだろうけど)。

num = "0"
if num.to_i < 10
  num = "0" + num
end

ただ、なんか頭悪いなーって思う

Ruby でこんなことをしなくちゃいけないのか? と思うのと同時に、 C言語だったら sprintf とかでできるんじゃないかなーと思い、探してみた。
そしたら、そのまんまズバリで sprintf ってのがある。
これを使うと、こう書ける。

num = "0"
num = sprintf("%02d", num)

num が数字でも文字列でもよしなにやってくれる模様。
欲を言えば、破壊メソッド的なものがあると良いんだけど、それは num に値を代入する時点で sprintf をかませば良いか。
参考:http://www.ruby-lang.org/ja/man/?cmd=view;name=sprintf%A5%D5%A5%A9%A1%BC%A5%DE%A5%C3%A5%C8