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秒