Javaで数字の頭を0埋めする方法

当ページのリンクには広告が含まれている場合があります。
dual-screen

数字を扱う際に桁数を揃えたくなること、ありませんか?
例えば、101というIDが入力された場合に、00101として保存するような場合ですね。
そんな時はStringクラスのformatメソッドを使えばOKです。

目次

String.format()の基本的な使い方

String.format()クラスの基本的な型はString.format(“元となる文字列”, “値”); となります

例として、「今年は○○年ですね」という文字列を生成してみましょう。
この時に受け取る「値」は「2019」とします。

その場合は以下のようになります。

String formatStr = String.format(“今年は%d年ですね”, 2019); 
System.out.println(formatStr);
// 出力結果
今年は2019年ですね

元となる文字列の中に%dとありますが、これは「ここにdecimal型の値が入りますよ」という印です。
decimal型の頭文字をとってdとしているわけですね。

察しの良い方はお気づきかもしれませんが、これは他の型でも同じです。

  • boolean型:%b
  • float型:%f
  • String型:%s
  • char型:%c

また、日時のフォーマットにも対応しており、その際は少し形が変わります。
先ほどまでは%{オプション}という形でしたが、日付の場合は%t{オプション}というように、tが必須となるのです。

オプションに指定するパラメータは数が多いので、ここでは1つだけ例を挙げようと思います。

String formatStr = String.format("%tT", Calendar.getInstance());
System.out.println(formatStr);
// 出力結果
21:34:00

他のパラメータも知りたい方は、Oracleのページが詳しいので、そちらをご確認ください。

String.format()で0埋めする

それでは今回の本題です。
数字の頭の部分を0埋めする場合は、以下のように書きます。

String formatStr = String.format("0埋めすると%05dです。", 123);
System.out.println(formatStr);
// 出力結果
0埋めすると00123です。

今度は%dの間に文字05が増えています。
これは、「5桁の数字で、足りない部分は0埋めします。」という意味です。
ですので、%09dというようにすると000000123となります。

ちなみに、0を除いて%5dとすると、「5桁の数字で、足りない部分は空白で埋めます。」という意味になります。
どういうことか見てみましょう。

String formatStr = String.format("0埋めすると%5dです。", 123);
System.out.println(formatStr);
// 出力結果
0埋めすると  123です。

わかりましたか?
123の前に空白ができていますね。

0埋めはしたくないけど文字の幅は揃えたい、という時に役に立つかもしれませんね。

終わりに

今回はString.format()を使って、数字の頭を0埋めする方法をご紹介しました。
文字列はフォーマットを作成して使い回すことが多いと思うので、覚えておいて損はないでしょう。

今回のString.format()を含め、Javaには色々なメソッドがあります。
こちらの本は辞書代わりに使えますので、一読してどんなメソッドがあるのか把握しておくと後々役にたつと思いますよ。

以上です。それでは。

シェアしていただけると嬉しいです!
目次