📘

日付の正規表現・0埋めの仕様

に公開

🎯 コードのポイント

sprintf("%04d-%02d-%02d", $1.to_i, $2.to_i, $3.to_i)

ここで %04d, %02d などの「書式指定子」が ゼロ埋めのルールを決めています。


💡 書式指定子の意味

%04d

  • %d → 整数(decimal)
  • 4 → 4桁に揃える
  • 0 → 足りない桁を 0で埋める

例:

sprintf("%04d", 1999) # => "1999"
sprintf("%04d", 5)    # => "0005"

%02d

  • %d → 整数
  • 2 → 2桁に揃える
  • 0 → 0埋めする

例:

sprintf("%02d", 1)  # => "01"
sprintf("%02d", 11) # => "11"

💡 実際の流れ

date_str = "1999年1月5日"

正規表現でキャプチャ:

  • $1 = "1999"
  • $2 = "1"
  • $3 = "5"

数値に変換して sprintf で整形すると:

sprintf("%04d-%02d-%02d", 1999, 1, 5)

"1999-01-05"


✅ まとめ

  • 0 → 足りない桁をゼロで埋める
  • 24 → 桁数の指定
  • %d → 整数

👉 %04d なら「整数を4桁で表示、足りない分は0埋め」
👉 %02d なら「整数を2桁で表示、足りない分は0埋め」


📘参考

https://docs.ruby-lang.org/ja/latest/doc/print_format.html


スクラップに他の応用まとめる予定です。
https://zenn.dev/hi_kun0912/scraps/3be067d10874b5

Discussion