formatメソッド
文字列を整形する – formatメソッド- public static String format([Locale locale,] String format, Object… args)
- locale:整形に利用するロケール(省略時はシステムデフォルト)
- format:書式文字列
- args:書式に割り当てる値
formatメソッドを利用することで、文字列を指定された書式文字列で整形できます(※)。書式文字列は「%[インデックス$][フラグ][幅][.精度]型」の形式で指定します。
※整形された文字列をそのまま出力するならば、System.out.printfメソッドも利用できます。| 書式文字列の構成要素 | |
|---|---|
| 指定子 | 概要 |
| インデックス | 引数リスト内での引数の位置 |
| フラグ | 出力形式を指定 |
| 幅 | 出力する最小の文字数 |
| 精度 | 全体桁数(整数)、または小数点以下の桁数(浮動小数点数) |
| 型 | 値の型 |
「型」として利用できる値には、以下のようなものがあります。大文字/小文字とあるものは、大文字の場合に結果が大文字変換されたものが返されます。
| formatメソッドで利用できる主なデータ型 | |
|---|---|
| 型 | 概要 |
| b、B | ブール値 |
| h、H | ハッシュコードを16進数に変換 |
| s、S | 文字列 |
| c、C | Unicode文字 |
| d | 10進整数 |
| o | 8進整数 |
| x、X | 16進整数 |
| e、E | 浮動小数点数形式の10進数 |
| f | 10進小数点数 |
| t、T | 日付/時刻変換文字の接頭辞 |
| % | リテラル’%’(u0025) |
| n | プラットフォーム固有の行区切り文字 |
以下は、主なデータ型について、具体的な例と結果を触れていきます。
文字列「%7s」で出力される最大文字数、「%.4s」で最小文字数を指定できます。
StrFormat.java(抜粋)
String str = "samples";
System.out.println(String.format("値は「%10s」です。", str));
// 結果:値は「 samples」です。
System.out.println(String.format("値は「%-10s」です。", str));
// 結果:値は「samples 」です。
System.out.println(String.format("値は「%.2s」です。", str));
// 結果:値は「sa」です。
浮動小数点数では、以下のような形式で表示を指定できます。
StrFormat2.java(抜粋)
double num = 1.23456;
System.out.println(String.format("値は「%e」です。", num));
// 結果:値は「1.234560e+00」です。
System.out.println(String.format("値は「%E」です。", num));
// 結果:値は「1.234560E+00」です。
System.out.println(String.format("値は「%f」です。", num));
// 結果:値は「1.234560」です。
System.out.println(String.format("値は「%.3f」です。", num));
// 結果:値は「1.235」です。
日付/時刻を整形する「t」はそれ単体では意味がありませんので、後方に日付/時刻書式を指定しなければなりません。主な日付/時刻書式は、以下の通りです。
| 日付/時刻の書式 | |
|---|---|
| 書式 | 概要 |
| Y | 年(4桁) |
| m | 月(01~12) |
| d | 日(01~31) |
| H | 時(00~23) |
| I | 時(01~12) |
| M | 分(00~59) |
| S | 秒(00~59) |
| L | ミリ秒(000~999) |
| D | 日付(%tm/%td/%tyと同じ) |
| T | 時刻(%tH:%tM:%tSと同じ) |
以下に具体的な例を挙げていきます。
StrFormat3.java(抜粋)
Date c = new Date();
System.out.println(String.format("%tY年 %tm月 %td日", c, c, c));
// 結果:2020年 01月 04日
System.out.println(String.format("%tH時 %tM分 %tS秒", c, c, c));
// 結果:14時 23分 36秒






