Open5
正規表現と日付
スペース埋め(デフォルト)
sprintf("%4d", 5)
# => " 5"
書式の意味
-
0 を付けなければデフォルトで スペースで埋める
-
%4d → 幅4桁で右寄せ、残りは空白
任意の桁数に変更
3桁でゼロ埋め
sprintf("%03d", 7)
# => "007"
5桁でスペース埋め
sprintf("%5d", 42)
# => " 42"
左寄せにする場合
sprintf("%-4d", 5)
# => "5 "
-
-を付けると左寄せになります。
サンプルコード
date_str = "1999年1月5日"
converted_zero = date_str.gsub(/(\d{4})年(\d{1,2})月(\d{1,2})日/) do
sprintf("%04d-%02d-%02d", $1.to_i, $2.to_i, $3.to_i)
end
converted_space = date_str.gsub(/(\d{4})年(\d{1,2})月(\d{1,2})日/) do
sprintf("%4d-%2d-%2d", $1.to_i, $2.to_i, $3.to_i)
end
puts converted_zero # => "1999-01-05"
puts converted_space # => "1999- 1- 5"
西暦は4桁ゼロ埋め・月日は2桁ゼロ埋めの混在ルールで処理するサンプル
🎯 サンプルコード(混在ルール)
date_str = "1999年1月5日"
converted = date_str.gsub(/(\d{1,4})年(\d{1,2})月(\d{1,2})日/) do
year = sprintf("%04d", $1.to_i) # 西暦4桁ゼロ埋め
month = sprintf("%02d", $2.to_i) # 月2桁ゼロ埋め
day = sprintf("%02d", $3.to_i) # 日2桁ゼロ埋め
"#{year}-#{month}-#{day}"
end
puts converted
# => "1999-01-05"
解説
-
西暦(年)
sprintf("%04d", $1.to_i)- 例:
199→"0199" - 例:
2024→"2024"
- 例:
-
月と日
sprintf("%02d", $2.to_i)- 例:
1→"01" - 例:
11→"11"
- 例:
-
正規表現
/(\d{1,4})年(\d{1,2})月(\d{1,2})日/- 年:1〜4桁(西暦は3桁以下の入力も考慮)
- 月/日:1〜2桁対応
実行例
"5年7月9日"
# => "0005-07-09"
"2024年11月23日"
# => "2024-11-23"
応用:スペース埋めにしたい場合
もし月日をスペース埋めで揃えたいなら %2d を使います👇
month = sprintf("%2d", $2.to_i) # => " 7"
day = sprintf("%2d", $3.to_i) # => " 9"
出力:
"0005- 7- 9"
結論
- 年:
%04dで必ず4桁 - 月・日:
%02dで2桁ゼロ埋め - 必要に応じて
%2dに変えればスペース埋めも可能