Java 言語の発展により、Java が提供するさまざまな API や関数がますます充実してきていますが、その中でも MessageFormat 関数は非常に実用的なテキスト整形ツールです。 MessageFormat 関数は、Java プログラム内の文字列をフォーマットし、生成された出力内のメッセージ内のプレースホルダーを自動的に置き換え、ロケール情報を保持して出力コンテンツをより正確にすることができます。この記事では、MessageFormat 関数を使用してテキストを書式設定する方法について詳しく説明します。
1. MessageFormat 関数とは
Java では、MessageFormat は、複雑なメッセージをフォーマットして出力するためのメソッドを提供するクラスです。 MessageFormat を使用すると、パラメーターを含むメッセージを定義し、そのメッセージに値を渡すだけで新しい出力メッセージを生成できます。 MessageFormat 関数の形式は次のとおりです。
MessageFormat.format(String pattern, Object ... argument)
pattern パラメーターはメッセージの形式を指定し、arguments パラメーターはプレースホルダーを置き換えます。実際の値のパラメータ配列を含むメッセージ内。たとえば、次のコードでは、MessageFormat 関数を使用して、名前、年齢、職業の文字列を挨拶にフォーマットします。
String name = "Xiao Ming";
int age = 22;
String job = "プログラマー";
Stringgreeting = MessageFormat.format("こんにちは、{0}、あなたは今年 {1} 歳で、{2} です。", name, age , job);
System.out.println(greeting);
出力結果は次のとおりです。 こんにちは、Xiao Ming、あなたは 22 歳のプログラマーです。
2. MessageFormat 関数の書式指定子
MessageFormat 関数では、プレースホルダーが実際の値に対応する必要があるため、書式指定子を使用する必要があります。形式指定子は、置換文字列の形式を決定するために使用されるマークアップ構文です。書式指定子の一般的な構造は次のとおりです。
{argument_index, format_type, format_style}
書式指定子には、パラメータ インデックス、書式タイプ、および書式スタイルの 3 つの部分が含まれていることに注意してください。パラメーター インデックスはパラメーター配列内で置換されるパラメーターの添字を指定し、形式タイプは置換されるパラメーターのデータ型を指定し、形式スタイルはパラメーターの形式に使用される文字列形式を指定します。
1. パラメーター インデックス
パラメーター インデックスは、パラメーター配列内で置き換えられるパラメーターの添字を指定する、プレースホルダー内の番号を指します。たとえば、上記のコードでは、プレースホルダー "{0}" は最初のパラメーター (文字列変数名) を指定します。
2. フォーマット タイプ
フォーマット タイプは、置換されるパラメータのデータ タイプを指します。MessageFormat 関数でサポートされるデータ タイプは次のとおりです:
次の例は、書式タイプを使用して数値を書式設定し、プレースホルダーに置き換える方法を示しています。
int count = 123456;
String message = MessageFormat.format("We have { 0, number} users.", count);
出力結果は次のようになります: ユーザー数は 123,456 人です。
3. フォーマット スタイル
フォーマット スタイルは、パラメータのフォーマットに使用される文字列フォーマットを指します。書式スタイルの構文は、書式タイプによって異なります。次の例では、書式スタイルを使用して、日付と時刻を指定された形式に書式設定します。
Date now = new Date();
String message = MessageFormat.format("The current timeは { 0,time,HH:mm:ss} です。日付は {0,date,yyyy-MM-dd} です。", now);
出力結果は次のようになります: 現在の時刻は 14: 58:30。日付は2021-02-16です。
3. MessageFormat 関数を使用するための実践的なヒント
1. ローカリゼーションのサポート
Java では、ローカリゼーションは、さまざまな言語、文化、地域に合わせて正しくフォーマットされた文字列を提供するプロセスです。 MessageFormat 関数は、ローカリゼーション情報を考慮に入れることができます。たとえば、以下のコードでは、MessageFormat 関数を使用して日付をフォーマットし、指定された地域情報に基づいてローカライズされた日付を生成します:
int year = 2021;
int month = 2;
int day = 16;
String result = MessageFormat.format("日付は {0,date,MMM d, yyyy} です。",
new GregorianCalendar(year, month - 1, day));
System.out.println(result);
出力結果は次のようになります:
日付は 2021 年 2 月 16 日です。
2. 形式を選択します
次の内容に基づいて別の形式を選択する必要がある場合特定のパラメータの値には、形式タイプの選択を使用できます。選択により、MessageFormat 関数で使用する範囲に従って、パラメータの値を別の値にマップできます。たとえば、次のコードでは、選択を使用しますスコアをマッピングするためのフォーマット タイプ 成績の場合:
double Score = 0.9;
String result = MessageFormat.format("この生徒のスコアは {0,number,percent} です。成績は: {0 ,choice,0#不合格 |0<60#不合格|60<70#合格|70<80#中|80<90#優秀|90<100#完璧|100#満点}。",
score);
System.out. println(result);
出力結果は次のようになります:
この生徒のスコアは 90.00% です。成績は: Excellent.
3. プレースホルダーと修飾子のエスケープ
MessageFormat 関数を使用する場合、特別な意味を持つ文字 (「{」、「}」、「#」など) は二重中括弧「{{」と「}」を使用する必要があります。 }" 脱出する。形式指定子を変更する必要がある場合は、修飾子を使用できます。修飾子は、書式設定スタイルを追加または削除したり、それらに任意のテキストを追加したりできます。たとえば、以下のコードでは、修飾子を使用して出力の後に感嘆符を追加します。
String name = "Xiao Ming";
String result = MessageFormat.format("Welcome, {0 }! ", new Object[] { name });
System.out.println(result "{0,choice,-1#?データを確認してください|0#|1#!}");
出力結果は次のとおりです:
ようこそ、Xiao Ming!
この記事では、書式指定子、ローカリゼーションのサポート、書式の選択、プレースホルダーと修飾子のエスケープなどのテキスト書式設定に MessageFormat 関数を使用する方法について説明します。さらに、MessageFormat 関数は、USB メッセージのフォーマット、HTML ページのフォーマット、電子メールのフォーマットなどにも使用できます。 MessageFormat 関数の使用方法の詳細については、公式 Java ドキュメントと API ドキュメントを参照してください。 MessageFormat 関数は、Java プログラミングにおける非常に実用的なツールであり、テキストやメッセージをより効率的にフォーマットするのに役立ちます。
以上がJava で MessageFormat 関数を使用してテキストの書式設定を行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。