文字列を整形できる! JavaのString.formatの使い方

こんにちは。関口です。
 
今回はJavaで文字列を整形できるformatメソッドについて、基本的な書き方からよく使う書き方をご紹介します。

formatメソッドの書き方

public static String format([Locale l,] String format, Object… args)

指定されたロケール(省略可能)、書式文字列、および引数を使って、整形された文字列を返します。文字列の整形を行う時はもちろん、数値型や日付型を文字列型に整形する場合に便利です。
 
書式文字列に書式を指定する際には「%」+「文字数、精度」+「データ型」で設定します。それでは、基本的な使い方と、よく使う書き方を紹介していきます。

基本的な使い方:文字置き換え

引数に設定した文字列を、書式文字列をもとに整形します。

String str = "AMG Solution";
System.out.println(String.format("値は「%s」です。", str));
// 実行結果
値は「AMG Solution」です。

「%s」で、引数に設定した文字列をそのまま書式文字列に設定することが可能です。これを「%S」にすることで、引数に設定した文字列を大文字に変換することも可能です。
String str = "AMG Solution";
System.out.println(String.format("値は「%S」です。", str));
// 実行結果
値は「AMG SOLUTION」です。

よく使う書き方①:ゼロ埋め

引数に設定した整数をゼロ埋めした文字列に整形します。

Integer suji = 1123;
System.out.println(String.format("値は「%05d」です。", suji));
// 実行結果
値は「01123」です。

「5」で文字数、「d」で引数が整数であることを指定しています。「001123」にしたい場合は、文字数に「6」を設定します。

よく使う書き方②:スペース埋め

「%」の後ろに「0」を設定しない場合は、空白で整形されます。

Integer suji = 1123;
System.out.println(String.format("値は「%6d」です。", suji));
// 実行結果
値は「  1123」です。

文字数を負の数にすることで、後ろにスペースを設定することも可能です。
Integer suji = 1123;
System.out.println(String.format("値は「%-6d」です。", suji));
// 実行結果
値は「1123  」です。

よく使う書き方③:カンマ区切り

引数に設定した整数を3桁ごとのカンマ区切りをした文字列に整形します。

Integer suji = 1123456;
System.out.println(String.format("値は「%,d」です。", suji));
// 実行結果
値は「1,123,456」です。

よく使う書き方④:小数点表示

小数点付きの数字を整形します。サンプルはBigDecimal型ですが、Double型でも同様に使用できます。

BigDecimal suji = new BigDecimal("1.1234567");
System.out.println(String.format("値は「%f」です。", suji));
// 実行結果
値は「1.123457」です。

小数点以下の桁数を設定して整形することも可能です。その場合は指定桁数で丸めた値になります。
BigDecimal suji = new BigDecimal("1.1234567");
System.out.println(String.format("値は「%.4f」です。", suji));
// 実行結果
値は「1.1235」です。

よく使う書き方⑤:日付

引数に設定したDate型を文字列に整形します。サンプル実行時の日付は「2024年08月01日 14時05分24秒」です。

Date day = new Date();
System.out.println(String.format("%tY年%tm月%td日", day, day, day));
System.out.println(String.format("%tH時%tM分%tS秒", day, day, day));
// 実行結果
2024年08月01日
14時05分24秒

時間を12時間表記にしたい場合は「%tI」、秒数をミリ秒表記にしたい場合は「%tL」を使用してください。

まとめ

いかがでしたでしょうか。
 
よく使うメソッドですが、「あれ、どう書くんだっけ」と調べることが多かったので今回ご紹介させていただきました。使ったことがある方も、はじめての方にもお役に立てたら幸いです。
 
 
 
 
《関連記事》

compareToを使ってみよう
技術
2021.9.14(Tue)

Javaで値の比較がしたい? 数値、日付、文字列のcompareToを使ってみよう!

#まとめ#プログラム#Java

Javaでよく出るエラーと対策5選
技術
2022.1.17(Mon)

これさえ見ればもう怖くない! Javaでよく出るエラーと対策5選

#まとめ#Java

Mapの使い方
技術
2022.4.27(Wed)

【解説】Java初心者向けMapの使い方! HashMapで電話帳を作る

#プログラム#Java

記事をシェア
MOST VIEWED ARTICLES