Java で String.format() メソッドを使って文字列を書式設定する方法

JavaBeginner
オンラインで実践に進む

はじめに

Java の String.format() メソッドは、文字列の書式設定や動的なテキスト出力を作成するための汎用的なツールです。このチュートリアルでは、このメソッドの基本的な使い方と、Java アプリケーションの可読性と表示を向上させるのに役立つ高度な文字列書式設定技術について説明します。

Java での文字列書式設定の概要

文字列の書式設定は Java プログラミングにおいて重要な要素であり、開発者がデータをより読みやすく、整理された形で表示することを可能にします。String.format() メソッドは、テキストと変数を組み合わせて書式設定された文字列を作成するための強力なツールです。

Java では、String.format() メソッドは C 言語の printf() メソッドと同じ書式設定ルールに従います。このメソッドは、書式文字列と引数のセットを受け取り、指定された書式指定子に基づいて書式設定された文字列を返します。

書式文字列は、2 種類の要素で構成されています。

  1. リテラルテキスト:これは、出力文字列にそのまま含まれるテキストです。
  2. 書式指定子:これは、出力文字列に挿入される値を表すプレースホルダーです。書式指定子は % 文字で始まり、その後に書式タイプの文字が続きます。

以下は、String.format() メソッドを使用した例です。

String name = "LabEx";
int age = 25;
double height = 1.75;
String formattedString = String.format("My name is %s, I'm %d years old, and I'm %.2f meters tall.", name, age, height);
System.out.println(formattedString);

出力結果:

My name is LabEx, I'm 25 years old, and I'm 1.75 meters tall.

この例では、書式文字列 "My name is %s, I'm %d years old, and I'm %.2f meters tall." には 3 つの書式指定子が含まれています。%s は文字列値 name 用、%d は整数値 age 用、%.2f は小数点以下 2 桁の浮動小数点数値 height 用です。

String.format() メソッドは、Java で文字列を書式設定するための柔軟で強力な方法を提供し、データを明確かつ整理された形で表示することを容易にします。

String.format() メソッドの使用方法

基本的な使い方

String.format() メソッドを使用するための基本的な構文は次のとおりです。

String.format(String format, Object... args)

format パラメータは書式指定子を含む文字列で、args パラメータは書式文字列に挿入する値を提供する可変長引数リストです。

以下は、String.format() メソッドを使用して異なるデータ型で文字列を書式設定する例です。

String name = "LabEx";
int age = 25;
double height = 1.75;
String formattedString = String.format("My name is %s, I'm %d years old, and I'm %.2f meters tall.", name, age, height);
System.out.println(formattedString);

出力結果:

My name is LabEx, I'm 25 years old, and I'm 1.75 meters tall.

書式指定子

String.format() メソッドは、それぞれ異なるデータ型を表すさまざまな書式指定子をサポートしています。以下はいくつかの一般的な書式指定子です。

指定子 説明
%s 引数を文字列として書式設定します
%d 引数を 10 進整数として書式設定します
%f 引数を浮動小数点数として書式設定します
%c 引数を文字として書式設定します
%b 引数をブール値として書式設定します

また、次の構文を使用して、フィールド幅、配置、精度などの追加の書式設定オプションを指定することもできます。

%[argument_index$][flags][width][.precision]conversion_character

たとえば、フィールド幅 20 文字で文字列を右揃えするには、書式指定子 %20s を使用できます。

日付と時刻の書式設定

String.format() メソッドは、%t 変換文字を使用して日付と時刻の書式設定もサポートしています。以下は例です。

Date currentDate = new Date();
String formattedDate = String.format("Today's date is %tD", currentDate);
System.out.println(formattedDate);

出力結果:

Today's date is 04/26/23

この例では、%tD 書式指定子を使用して Date オブジェクトを短い日付文字列 (MM/dd/yy) として書式設定しています。

String.format() メソッドで利用可能なさまざまな書式指定子と書式設定オプションを理解することで、Java でデータの高度にカスタマイズされた読みやすい文字列表現を作成することができます。

高度な文字列書式設定技術

引数を使用した書式設定

String.format() メソッドは引数インデックスの使用をサポートしており、これにより書式文字列内で同じ引数を複数回再利用することができます。特定の方法で書式設定する必要がある一連の値がある場合に便利です。

以下は例です。

int x = 10;
int y = 20;
String formattedString = String.format("The value of x is %1$d and the value of y is %1$d.", x, y);
System.out.println(formattedString);

出力結果:

The value of x is 10 and the value of y is 10.

この例では、%1$d 書式指定子は最初の引数 (x) を参照しており、書式文字列内で 2 回使用されています。

フラグを使用した書式設定

String.format() メソッドはフラグの使用もサポートしており、これにより出力の書式をカスタマイズすることができます。一般的なフラグには以下のようなものがあります。

  • +:出力の先頭に符号 (+ または -) を付けます
  • 0:出力を先頭にゼロを埋めます
  • -:指定されたフィールド幅内で出力を左揃えします
  • ,:数値にカンマ区切りを追加します

以下は例です。

int number = 12345;
String formattedString = String.format("The number is: %,d", number);
System.out.println(formattedString);

出力結果:

The number is: 12,345

この例では、, フラグを使用して数値にカンマ区切りを追加しています。

精度を使用した書式設定

浮動小数点数を書式設定する際に、出力の精度を指定することもできます。精度は小数点以下に表示する桁数として定義されます。

以下は例です。

double pi = Math.PI;
String formattedString = String.format("The value of pi is: %.3f", pi);
System.out.println(formattedString);

出力結果:

The value of pi is: 3.142

この例では、%.3f 書式指定子を使用して pi の値を小数点以下 3 桁で書式設定しています。

これらの高度な文字列書式設定技術を習得することで、Java アプリケーションで高度にカスタマイズされた読みやすい出力を作成することができます。

まとめ

このチュートリアルを終えると、Java で String.format() メソッドを使用して文字列を書式設定し、出力をカスタマイズし、動的なテキストを作成する方法をしっかりと理解することができます。この知識は、データレポート作成からユーザーインターフェイス開発まで、幅広い Java プログラミングタスクで役立つでしょう。