注目記事

【Javaコード入門】文字列_⑯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(抜粋)

  1. var str = "samples";
  2. System.out.println(String.format("値は「%10s」です。", str));
  3.     // 結果:値は「   samples」です。
  4. System.out.println(String.format("値は「%-10s」です。", str));
  5.     // 結果:値は「samples   」です。
  6. System.out.println(String.format("値は「%.2s」です。", str));
  7.     // 結果:値は「sa」です。

浮動小数点数

浮動小数点数では、以下のような形式で表示を指定できます。

StrFormat2.java(抜粋)

  1. var num = 1.23456;
  2. System.out.println(String.format("値は「%e」です。", num));
  3.     // 結果:値は「1.234560e+00」です。
  4. System.out.println(String.format("値は「%E」です。", num));
  5.     // 結果:値は「1.234560E+00」です。
  6. System.out.println(String.format("値は「%f」です。", num));
  7.     // 結果:値は「1.234560」です。
  8. System.out.println(String.format("値は「%.3f」です。", num));
  9.     // 結果:値は「1.235」です。

日付/時刻

日付/時刻を整形する「t」はそれ単体では意味がありませんので、後方に日付/時刻書式を指定しなければなりません。主な日付/時刻書式は、以下の通りです。

日付/時刻の書式
書式 概要
Y 年(4桁)
m 月(01~13。13は太陰暦のための特殊値)
d 日(01~31)
H 時(00~23)
I 時(01~12)
M 分(00~59)
S 秒(00~60。60は閏秒のための特殊値)
L ミリ秒(000~999)
D 日付(%tm/%td/%tyと同じ)
T 時刻(%tH:%tM:%tSと同じ)

以下に具体的な例を挙げていきます。

StrFormat3.java(抜粋)

  1. var c = new Date();
  2. System.out.println(String.format("%tY年 %tm月 %td日", c, c, c));
  3.     // 結果:2025年 01月 04日
  4. System.out.println(String.format("%tH時 %tM分 %tS秒", c, c, c));
  5.     // 結果:14時 23分 36秒

 

Java 15以降では、formatのインスタンスメソッド版としてformattedメソッドも追加されました。

 

  1. var fmt = "値は「%10s」です。";
  2. System.out.println(fmt.formatted("samples"));
  3.  // 結果:値は「   samples」です。
文字列_目次
文字列
length/codePointCountメソッド
isEmptyメソッド
charAtメソッド
indexOf/lastIndexOfメソッド
equals/equalsIgnoreCaseメソッド
regionMatchesメソッド
compareTo/compareToIgnoreCaseメソッド
trimメソッド
startsWith/endsWithメソッド
toLowerCase/toUpperCaseメソッド
substringメソッド
replaceメソッド
splitメソッド
joinメソッド
formatメソッド
appendメソッド

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。