Java メッセージの形式
-
MessageFormat
を利用して二重引用符を使用してメッセージをフォーマットする -
MessageFormat
を利用したUnicode
文字を使用してメッセージをフォーマットする -
MessageFormat
を利用したエスケープシーケンスを使用したメッセージのフォーマット -
MessageFormat
を利用して文字を置き換えてメッセージをフォーマットする
このチュートリアルでは、JavaAPI によって提供される JavaMessageFormat
クラスを使用してメッセージをフォーマットする方法を学習します。フォーマットは、文字と文字列をメッセージに動的に挿入するプロセスであり、MessageFormat
はこの機能を提供します。
MessageFormat
は、オブジェクト引数を使用して、オブジェクト引数が挿入される場所を示すパターンを使用してフォーマットされた文字列を形成します。
オブジェクト引数は、MessageFormat
オブジェクトパラメータで渡される位置に基づいてパターンに挿入されます。MessageFormat
の静的な format()
メソッドを使用して、メッセージのフォーマット方法を学習します。
format()
メソッドに渡される最初のパラメーターはパターンであり、その後に動的に文字列に挿入する文字列指定子に基づくオブジェクト引数が続きます。パターンに要素を挿入するときに、MessageFormat
によって異なる解釈が行われる特定の文字を使用する場合があります。これにより、予想とは異なる結果が生じる可能性があります。
たとえば、MessageFormat
を使用してフォーマットされているメッセージ内で you're
などの文字列に一重引用符を使用すると、文字列 youre
になります。一重引用符は、フォーマットされないセクションを示すために使用され、次の例のメッセージの残りのパターンはフォーマットされていないことに注意してください。
import java.text.MessageFormat;
public class FormatString {
public static void main(String[] args) {
String name = "John";
long age = 30;
String message =
MessageFormat.format("Hello {0}, you're turning {1} years old today", name, age);
System.out.println(message);
}
}
出力:
Hello John, youre turning {1} years old today
次のセクションでは、パターンが正常にフォーマットされるように、メッセージに一重引用符を挿入するために使用できる 4つの異なる方法について説明します。
MessageFormat
を利用して二重引用符を使用してメッセージをフォーマットする
MessageFormat
を使用してフォーマットされているメッセージに一重引用符を追加するには、以下に示すように、文字列で一重引用符'
の代わりに 2つの一重引用符''
を使用する必要があります。
import java.text.MessageFormat;
public class FormatString {
public static void main(String[] args) {
String name = "John";
long age = 30;
String message =
MessageFormat.format("Hello {0}, you''re turning {1} years old today", name, age);
System.out.println(message);
}
}
出力:
Hello John, you're turning 30 years old today
二重引用符を追加した後に一重引用符が挿入され、残りのパターンは正しい値でフォーマットされることに注意してください。
MessageFormat
を利用した Unicode
文字を使用してメッセージをフォーマットする
すべての文字には Unicode 表現があります。Java は Unicode 文字を読み取ることができるため、一重引用符の Unicode 表現を使用して、文字列に一重引用符を挿入できます。
import java.text.MessageFormat;
public class FormatString {
public static void main(String[] args) {
String name = "John";
long age = 30;
String message =
MessageFormat.format("Hello {0}, you\u2019re turning {1} years old today", name, age);
System.out.println(message);
}
}
出力:
Hello John, you're turning 30 years old today
Unicode 文字\u2019
は文字列に一重引用符を追加し、メッセージの残りのパターンは正しい値でフォーマットされます。
MessageFormat
を利用したエスケープシーケンスを使用したメッセージのフォーマット
この方法は、二重引用符を使用する方法と似ていますが、エスケープシーケンス\
を使用します。これは、文字のシーケンスを挿入するために先頭に円記号が付いた文字です。以下に示すように、パターンに 2つの引用符エスケープシーケンスを挿入することで、単一引用符を挿入できます。
import java.text.MessageFormat;
public class FormatString {
public static void main(String[] args) {
String name = "John";
long age = 30;
String message =
MessageFormat.format("Hello {0}, you\'\'re turning {1} years old today", name, age);
System.out.println(message);
}
}
出力:
Hello John, you're turning 30 years old today
MessageFormat
を利用して文字を置き換えてメッセージをフォーマットする
文字列を操作しているので、文字列を同じままにして、replaceAll()
メソッドを使用して一重引用符を二重引用符に置き換え、最終的に文字列に一重引用符を追加できます。
import java.text.MessageFormat;
public class FormatString {
public static void main(String[] args) {
String name = "John";
long age = 30;
String message = MessageFormat.format(
"Hello {0}, you're turning {1} years old today".replaceAll("'", "''"), name, age);
System.out.println(message);
}
}
出力:
Hello John, you're turning 30 years old today
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub