クラスMessageFormat
- すべての実装されたインタフェース:
Serializable
,Cloneable
MessageFormat
は、連結されたメッセージを、言語に依存しない方法で構築するためのものです。 このクラスを使用して、エンド・ユーザーに表示されるメッセージを作成します。
MessageFormat
は、1組のオブジェクトをフォーマットし、フォーマットした文字列をパターンの適切な場所に挿入します。
ノート: MessageFormat
がほかのFormat
クラスと異なる点は、MessageFormat
オブジェクトを(getInstance
スタイルのファクトリ・メソッドではなく)そのコンストラクタの1つで作成するということです。 MessageFormat
では、ロケール固有の動作は実装されていないので、ファクトリ・メソッドは必要ありません。 ロケール固有の動作は、提供するパターンおよび挿入された引数に使用するサブフォーマットによって定義されます。
パターンとその解釈
MessageFormat
は次のパターンを使用します。
MessageFormatPattern: String MessageFormatPattern FormatElement String FormatElement: { ArgumentIndex } { ArgumentIndex , FormatType } { ArgumentIndex , FormatType , FormatStyle } FormatType: number dtf_date dtf_time dtf_datetime pre-defined DateTimeFormatter(s) date time choice list FormatStyle: short medium long full integer currency percent compact_short compact_long or unit SubformatPattern
ArgumentIndex値は、数字'0'
- '9'
を使用して記述した0以上の整数です。format
メソッドに渡されたarguments
配列またはparse
メソッドによって返された結果の配列のインデックスを表します。
FormatTypeおよびFormatStyle値は、フォーマット要素のFormat
インスタンスの生成に使用します。 次の表に、Format
インスタンスへの値のマップについて示します。 これらの値は、applyPattern(String)
に渡されると大/小文字が区別されません。 表にない組み合わせは使用できません。 SubformatPatternは、使用するFormat
サブクラスに対して有効なパターン文字列である必要があります。
パターン内の見積ルール
String内で1組の単一引用符を使用して、単一引用符を除く任意の文字を囲むことができます。 たとえば、パターン文字列"'{0}'"
は、FormatElementではなく、文字列"{0}"
を表します。 単一引用符自体を表すには、String全体で単一引用符を2つにする(''
)必要があります。 たとえば、パターン文字列"'{''}'"
は、'{'
と'}'
(左右の中括弧が引用符で囲まれたもの) ではなく、'{
(引用の開始と左中括弧)、''
(単一引用符)、}'
(右中括弧と引用の終了)が連続するものとして解釈され、文字列"{}"
ではなく、"{'}"
を表します。
SubformatPatternは対応するサブフォーマットで解釈され、サブフォーマットに依存するパターンのルールが適用されます。 たとえば、パターン文字列"{1,number,$'#',##}"
(下線付きのSubformatPattern)と指定すると、ハッシュ記号(#)が付いた数値フォーマットが生成されます。結果は、 "$#31,45"
のようになります。 詳細は、Format
サブクラスのドキュメントを参照してください。
一致しない引用符は、指定されたパターンの最後で閉じられるものとして処理されます。 たとえば、パターン文字列"'{0}"
はパターン"'{0}'"
として処理されます。
引用符で囲まれていないパターン内の中括弧のバランスを取る必要があります。 たとえば、"ab {0} de"
や"ab '}' de"
は有効なパターンですが、"ab {0'}' de"
、"ab } de"
、"''{''"
は無効です。
- 警告:
- メッセージ・フォーマット・パターン内での引用符の使用ルールは、あまり明快ではありません。 特に、単一引用符を二重にする必要の有無がローカライザにとっては明らかでないこともあります。 ローカライザにルールについて情報を提供し、リソースにバンドルされるソース・ファイル内のコメントなどによって、どの文字列が
MessageFormat
で処理されるのかを示すようにしてください。 ローカライザは、変換した文字列でオリジナルのバージョンにはない単一引用符を使用しなければならない場合があります。
使用方法
次の例は、MessageFormat
の一般的な使用方法を示しています。 国際化されたプログラムでは、メッセージ形式パターンやその他の静的文字列がリソース・バンドルから取得される可能性があります。
int planet = 7;
String event = "a disturbance in the Force";
String result = MessageFormat.format(
"At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
planet, new GregorianCalendar(2053, Calendar.JULY, 3, 12, 30).getTime(), event);
result
は、次を返します:
At 12:30:00 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
より高度なパターンのために、ChoiceFormat
をMessageFormat
とともに使用して、単数形および複数形の正確なフォームを生成できます:
MessageFormat msgFmt = new MessageFormat("The disk \"{0}\" contains {1,choice,0#no files|1#one file|1< {1,number,integer} files}.");
Object[] args = {"MyDisk", fileCount};
String result = msgFmt.format(args);
fileCount
に異なる値を持つresult
は、次の値を返します:
The disk "MyDisk" contains no files. The disk "MyDisk" contains one file. The disk "MyDisk" contains 1,273 files.
ノート: 前のスニペットに示すように、MessageFormat
でChoiceFormat
によって生成された文字列は特別として扱われ、'{'が出現してサブフォーマットを示し、再帰を引き起こします。 FormatElement
がChoiceFormat
パターンで定義されている場合、指定されたFormatType
およびFormatStyle
パターンに従ってのみフォーマットされます。 最上位レベルMessageFormat
の関連付けられたサブフォーマットは、ChoiceFormat
パターンで定義されたFormatElement
には適用されません。 MessageFormat
とChoiceFormat
を両方とも(文字列パターンとしてではなく)プログラム的に作成する場合には、再帰的に繰り返すフォーマットを作成して永久ループに陥らないように注意してください。
日付と時間の書式設定
MessageFormatは、java.time.format
およびjava.text
パッケージの日時フォーマッタをサポートするパターンを提供します。 日付が11/16/2023:である次の3つの例を考えてみます
1) 「フル」 FormatStyle
を含むdate FormatType
、
Object[] arg = {new GregorianCalendar(2023, Calendar.NOVEMBER, 16).getTime()};
var fmt = new MessageFormat("The date was {0,date,full}");
fmt.format(arg); // returns "The date was Thursday, November 16, 2023"
2) dtf_date FormatType
と「フル」 FormatStyle
、
Object[] arg = {LocalDate.of(2023, 11, 16)};
var fmt = new MessageFormat("The date was {0,dtf_date,full}");
fmt.format(arg); // returns "The date was Thursday, November 16, 2023"
3) ISO_LOCAL_DATE FormatType
、
Object[] arg = {LocalDate.of(2023, 11, 16)};
var fmt = new MessageFormat("The date was {0,ISO_LOCAL_DATE}");
fmt.format(arg); // returns "The date was 2023-11-16"
解析中
1つの引数が文字列内で複数回解析されると、最後に一致するものが解析の最終結果になります。 たとえば、
MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}");
Object[] objs = {Double.valueOf(3.1415)};
String result = mf.format( objs );
// result now equals "3.14, 3.1"
objs = mf.parse(result, new ParsePosition(0));
// objs now equals {Double.valueOf(3.1)}
同様に、同じ引数が複数回出てくるパターンを使ってMessageFormat
オブジェクトを解析すると、最後に一致するものが返されます。 たとえば、
MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
String forParsing = "x, y, z";
Object[] objs = mf.parse(forParsing, new ParsePosition(0));
// objs now equals {new String("z")}
Synchronization
メッセージ・フォーマットは同期化されません。 スレッドごとに別のフォーマット・インスタンスを作成することをお薦めします。 複数のスレッドがフォーマットに並行してアクセスする場合は、外部的に同期化する必要があります。
- 導入されたバージョン:
- 1.1
- 関連項目:
-
ネストされたクラスのサマリー
ネストされたクラス修飾子と型クラス説明static class
MessageFormat.formatToCharacterIterator
から返されたAttributedCharacterIterator
内の属性キーとして使用する定数を定義します。 -
コンストラクタのサマリー
コンストラクタコンストラクタ説明MessageFormat
(String pattern) デフォルトのFORMAT
ロケールと指定されたパターンのためのMessageFormatを構築します。MessageFormat
(String pattern, Locale locale) 指定されたロケールとパターンのためのMessageFormatを構築します。 -
メソッドのサマリー
修飾子と型メソッド説明void
applyPattern
(String pattern) このメッセージ・フォーマットによって使用されるパターンを設定します。clone()
このオブジェクトのコピーを作成して、返します。boolean
指定されたオブジェクトをこのMessageFormat
と比較し、等しいかどうかを確認します。final StringBuffer
format
(Object[] arguments, StringBuffer result, FieldPosition pos) オブジェクトの配列をフォーマットし、提供されたStringBuffer
に、フォーマット要素をフォーマットされたオブジェクトによって置き換えてMessageFormat
のパターンを追加します。final StringBuffer
format
(Object arguments, StringBuffer result, FieldPosition pos) オブジェクトの配列をフォーマットし、提供されたStringBuffer
に、フォーマット要素をフォーマットされたオブジェクトによって置き換えてMessageFormat
のパターンを追加します。static String
指定されたパターンを使ってMessageFormatを作成し、それを使用して指定された引数をフォーマットします。formatToCharacterIterator
(Object arguments) オブジェクトの配列をフォーマットし、それをMessageFormat
のパターンに挿入して、AttributedCharacterIterator
を生成します。Format[]
あらかじめ設定されたパターン文字列内のフォーマット要素に使用されるフォーマットを取得します。Format[]
format
メソッドに渡される値またはparse
メソッドから返された値に使用されるフォーマットを取得します。サブフォーマットを作成または比較する場合に使用されるロケールを取得します。int
hashCode()
このMessageFormat
のハッシュ・コード値を返します。Object[]
指定された文字列の先頭からテキストを解析してオブジェクト配列を生成します。Object[]
parse
(String source, ParsePosition pos) 文字列を解析します。parseObject
(String source, ParsePosition pos) 文字列からテキストを解析してオブジェクト配列を生成します。void
あらかじめ設定されたパターン文字列内の指定されたフォーマット要素インデックスで、フォーマット要素に使用するフォーマットを設定します。void
setFormatByArgumentIndex
(int argumentIndex, Format newFormat) 指定された引数インデックスを使用する、あらかじめ設定されたパターン文字列内のフォーマット要素に使用するフォーマットを設定します。void
setFormats
(Format[] newFormats) あらかじめ設定されたパターン文字列内のフォーマット要素に使用するフォーマットを設定します。void
setFormatsByArgumentIndex
(Format[] newFormats) format
メソッドに渡される値またはparse
メソッドから返された値に使用するフォーマットを設定します。void
サブフォーマットを作成または比較する場合に使用するロケールを設定します。このMessageFormat
の現在の状態を表すpatterns section
に付随する文字列パターンを返します。toString()
デバッグ用に、このMessageFormat
を識別する文字列を返します。クラスjava.text.Formatで宣言されたメソッド
format, parseObject
-
コンストラクタの詳細
-
MessageFormat
public MessageFormat(String pattern) デフォルトのFORMAT
ロケールと指定されたパターンのためのMessageFormatを構築します。 コンストラクタはロケールを設定してからパターンを解析し、含まれているフォーマット要素についてサブフォーマットのリストを作成します。 パターンとその解釈はクラスの概要で指定されています。- パラメータ:
pattern
- このメッセージ・フォーマットのためのパターン- 例外:
IllegalArgumentException
- パターンが無効な場合NullPointerException
-pattern
がnull
の場合
-
MessageFormat
指定されたロケールとパターンのためのMessageFormatを構築します。 コンストラクタはロケールを設定してからパターンを解析し、含まれているフォーマット要素についてサブフォーマットのリストを作成します。 パターンとその解釈はクラスの概要で指定されています。- 実装要件:
- デフォルトの実装では、
MessageFormat
オブジェクトの作成時にlocale
がnull
の場合、またはformat()
がnullロケールでMessageFormat
インスタンスによってコールされ、実装でロケール依存のサブフォーマットが使用される場合に、NullPointerException
がスローされます。 - パラメータ:
pattern
- このメッセージ・フォーマットのためのパターンlocale
- このメッセージ・フォーマットのためのロケール- 例外:
IllegalArgumentException
- パターンが無効な場合NullPointerException
-pattern
がnull
またはlocale
がnull
であり、実装でロケールに依存するサブフォーマットが使用されている場合。- 導入されたバージョン:
- 1.4
-
-
メソッドの詳細
-
setLocale
public void setLocale(Locale locale) サブフォーマットを作成または比較する場合に使用するロケールを設定します。 これは、後に行われる次のようなメソッドへの呼出しに影響します。applyPattern
メソッドとtoPattern
メソッド(フォーマット要素がフォーマット型を指定しており、そのためサブフォーマットがapplyPattern
メソッドで作成される場合)format
メソッドとformatToCharacterIterator
メソッド(フォーマット要素がフォーマット型を指定しておらず、そのためサブフォーマットがこれらの書式設定メソッドで作成される場合)。
- パラメータ:
locale
- サブフォーマットを作成または比較する場合に使用するロケール
-
getLocale
-
applyPattern
public void applyPattern(String pattern) このメッセージ・フォーマットによって使用されるパターンを設定します。 メソッドはパターンを解析し、含まれているフォーマット要素についてサブフォーマットのリストを作成します。 パターンとその解釈はクラスの概要で指定されています。- パラメータ:
pattern
- このメッセージ・フォーマットのためのパターン- 例外:
IllegalArgumentException
- パターンが無効な場合NullPointerException
-pattern
がnull
の場合
-
toPattern
public String toPattern()このMessageFormat
の現在の状態を表すpatterns section
に付随する文字列パターンを返します。 文字列は内部情報から構築されるので、以前に適用されたパターンと等しくなるとは限りません。- 実装要件:
MessageFormat
の実装は、MessageFormat()
コンストラクタまたはapplyPattern()
に渡されると、このインスタンスと意味的に同等のインスタンスを生成する文字列を返します。 サブフォーマットを文字列パターンに変換できない場合、FormatType
およびFormatStyle
はFormatElement
から省略されます。- 戻り値:
- この
MessageFormat
の現在の状態を表すpatterns section
に準拠する文字列パターン
-
setFormatsByArgumentIndex
public void setFormatsByArgumentIndex(Format[] newFormats) format
メソッドに渡される値またはparse
メソッドから返された値に使用するフォーマットを設定します。newFormats
内の要素のインデックスは、あらかじめ設定されたパターン文字列で使用される引数インデックスに対応します。 したがって、newFormats
内のフォーマットの順序はformat
メソッドに渡されたarguments
配列またはparse
メソッドによって返された結果の配列内の要素の順序に対応します。引数インデックスがパターン文字列内で複数のフォーマット要素に使用される場合、対応する新しいフォーマットがそのすべてのフォーマット要素に使用されます。 引数インデックスが文字列内でどのフォーマット要素にも使用されない場合は、対応する新しいフォーマットは無視されます。 提供されたフォーマットが必要数に満たない場合、
newFormats.length
より少ない引数インデックスに対するフォーマットだけが置き換えられます。- パラメータ:
newFormats
- 使用する新しいフォーマット- 例外:
NullPointerException
-newFormats
がnullである場合- 導入されたバージョン:
- 1.4
-
setFormats
public void setFormats(Format[] newFormats) あらかじめ設定されたパターン文字列内のフォーマット要素に使用するフォーマットを設定します。newFormats
内のフォーマットの順序は、パターン文字列内のフォーマット要素の順序に対応します。パターン文字列で必要とするよりも多くのフォーマットが提供された場合、余ったフォーマットは無視されます。 必要数に満たない場合は、最初の
newFormats.length
だけが置き換えられます。パターン文字列内のフォーマット要素の順序はローカリゼーションの処理過程で変更されることが多いため、通常は
setFormatsByArgumentIndex
メソッドを使用するほうが効率的です。このメソッドは、フォーマットの順序をformat
メソッドに渡されたarguments
配列またはparse
メソッドによって返された結果の配列内の要素の順序に対応するものと見なします。- パラメータ:
newFormats
- 使用する新しいフォーマット- 例外:
NullPointerException
-newFormats
がnullである場合
-
setFormatByArgumentIndex
public void setFormatByArgumentIndex(int argumentIndex, Format newFormat) 指定された引数インデックスを使用する、あらかじめ設定されたパターン文字列内のフォーマット要素に使用するフォーマットを設定します。 引数インデックスはフォーマット要素定義の部分で、format
メソッドに渡されたarguments
配列またはparse
メソッドによって返された結果の配列のインデックスを表します。引数インデックスがパターン文字列内で複数のフォーマット要素に使用される場合、新しいフォーマットがそのすべてのフォーマット要素に使用されます。 引数インデックスが文字列内でどのフォーマット要素にも使用されない場合は、新しいフォーマットは無視されます。
- パラメータ:
argumentIndex
- 新しいフォーマットに使用するための引数インデックスnewFormat
- 使用する新しいフォーマット- 導入されたバージョン:
- 1.4
-
setFormat
public void setFormat(int formatElementIndex, Format newFormat) あらかじめ設定されたパターン文字列内の指定されたフォーマット要素インデックスで、フォーマット要素に使用するフォーマットを設定します。 フォーマット要素インデックスは、パターン文字列の先頭からカウントした、フォーマット要素のゼロから始まる数字です。パターン文字列内のフォーマット要素の順序は、ローカリゼーションの処理過程で変更されることが多いため、通常は
setFormatByArgumentIndex
メソッドを使用するほうが効率的です。このメソッドは、フォーマット要素が指定する引数インデックスを基に、フォーマット要素にアクセスします。- パラメータ:
formatElementIndex
- パターン内のフォーマット要素のインデックスnewFormat
- 指定されたフォーマット要素に使うフォーマット- 例外:
ArrayIndexOutOfBoundsException
-formatElementIndex
が、パターン文字列内のフォーマット要素の数以上の場合
-
getFormatsByArgumentIndex
public Format[] getFormatsByArgumentIndex()format
メソッドに渡される値またはparse
メソッドから返された値に使用されるフォーマットを取得します。 返された配列内の要素のインデックスは、あらかじめ設定されたパターン文字列で使用される引数インデックスに対応します。 したがって、返された配列内のフォーマットの順序は、format
メソッドに渡されたarguments
配列またはparse
メソッドによって返された結果の配列内の要素の順序に対応します。引数インデックスがパターン文字列内で複数のフォーマット要素に使用される場合、その最後のフォーマット要素で使用されるフォーマットが配列に返されます。 引数インデックスが文字列内でどのフォーマット要素にも使用されない場合は、nullが配列に返されます。
- 戻り値:
- パターン内の引数に使用されるフォーマット
- 導入されたバージョン:
- 1.4
-
getFormats
public Format[] getFormats()あらかじめ設定されたパターン文字列内のフォーマット要素に使用されるフォーマットを取得します。 返される配列内のフォーマットの順序は、パターン文字列内のフォーマット要素の順序に対応します。パターン文字列内のフォーマット要素の順序はローカリゼーションの処理過程で変更されることが多いため、通常は
getFormatsByArgumentIndex
メソッドを使用するほうが効率的です。このメソッドは、フォーマットの順序をformat
メソッドに渡されたarguments
配列またはparse
メソッドによって返された結果の配列内の要素の順序に対応するものと見なします。- 戻り値:
- パターン内のフォーマット要素に使用されるフォーマット
-
format
public final StringBuffer format(Object[] arguments, StringBuffer result, FieldPosition pos) オブジェクトの配列をフォーマットし、提供されたStringBuffer
に、フォーマット要素をフォーマットされたオブジェクトによって置き換えてMessageFormat
のパターンを追加します。個々のフォーマット要素に置換されたテキストは、次の表の最初に一致する行で示されるように、フォーマット要素の現在のサブフォーマットとフォーマット要素の引数インデックスにある
arguments
要素から得られます。 引数は、arguments
がnull
であるか、または要素の数がargumentIndex+1個より少ない場合、使用不可です。サブフォーマット 引数 フォーマットされたテキスト any 使用不可 "{" + argumentIndex + "}"
null
"null"
instanceof ChoiceFormat
any subformat.format(argument).indexOf('{') >= 0 ?
(new MessageFormat(subformat.format(argument), getLocale())).format(argument) : subformat.format(argument)!= null
any subformat.format(argument)
null
instanceof Number
NumberFormat.getInstance(getLocale()).format(argument)
instanceof Date
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()).format(argument)
instanceof String
argument
any argument.toString()
pos
がnullでなく、かつField.ARGUMENT
を参照している場合、最初のフォーマットされた文字列の位置が返されます。- パラメータ:
arguments
- フォーマットするかまたは置き換えるオブジェクトからなる配列。result
- テキストが追加される位置。pos
- 置換された最初の引数の位置を出力文字列で追跡します。- 戻り値:
result
として渡される文字列バッファー。フォーマットされたテキストが付加される- 例外:
IllegalArgumentException
-arguments
配列内の引数が、それを使用するフォーマット要素によって予測された型でない場合。NullPointerException
-result
がnull
の場合、またはこのメソッドをコールするMessageFormat
インスタンスでロケールがnullに設定され、実装でロケール依存サブフォーマットが使用されている場合。
-
format
指定されたパターンを使ってMessageFormatを作成し、それを使用して指定された引数をフォーマットします。 これは次の記述と同等です。(new
MessageFormat
(pattern)).format
(arguments, new StringBuffer(), null).toString()- パラメータ:
pattern
- パターン文字列arguments
- フォーマットするオブジェクト- 戻り値:
- フォーマットされた文字列
- 例外:
IllegalArgumentException
- パターンが無効な場合、またはarguments
配列内の引数が、それを使用するフォーマット要素によって予測された型でない場合。NullPointerException
-pattern
がnull
の場合
-
format
public final StringBuffer format(Object arguments, StringBuffer result, FieldPosition pos) オブジェクトの配列をフォーマットし、提供されたStringBuffer
に、フォーマット要素をフォーマットされたオブジェクトによって置き換えてMessageFormat
のパターンを追加します。 これは次の記述と同等です。format
((Object[]) arguments, result, pos)- 定義:
format
、クラスFormat
- パラメータ:
arguments
- フォーマットするかまたは置き換えるオブジェクトからなる配列。result
- テキストが追加される位置。pos
- 置換された最初の引数の位置を出力文字列で追跡します。- 戻り値:
toAppendTo
として渡される文字列バッファ。フォーマットされたテキストが追加される- 例外:
IllegalArgumentException
-arguments
配列内の引数が、それを使用するフォーマット要素によって予測された型でない場合。NullPointerException
-result
がnull
の場合、またはこのメソッドをコールするMessageFormat
インスタンスでロケールがnullに設定され、実装でロケール依存サブフォーマットが使用されている場合。
-
formatToCharacterIterator
public AttributedCharacterIterator formatToCharacterIterator(Object arguments) オブジェクトの配列をフォーマットし、それをMessageFormat
のパターンに挿入して、AttributedCharacterIterator
を生成します。 返されたAttributedCharacterIterator
を使用すると、結果のStringを構築できるとともに、結果のStringについての情報を判定できます。返された
AttributedCharacterIterator
のテキストは、次の記述によって返されるテキストと同一です。format
(arguments, new StringBuffer(), null).toString()さらに、
AttributedCharacterIterator
は、少なくともarguments
配列内の引数からテキストが生成された位置を示す属性を含みます。 これらの属性のキーはMessageFormat.Field
型です。属性の値は、テキストが生成された引数のarguments
配列内のインデックスを示すInteger
オブジェクトです。MessageFormat
が使用する基本のFormat
インスタンスからの属性/値も、結果のAttributedCharacterIterator
に配置されます。 これにより、結果のString内の引数の位置がわかるだけでなく、その引数がどのフィールドに含まれているかもわかります。- オーバーライド:
formatToCharacterIterator
、クラスFormat
- パラメータ:
arguments
- フォーマットするかまたは置き換えるオブジェクトからなる配列。- 戻り値:
- フォーマットされた値を説明するAttributedCharacterIterator。
- 例外:
NullPointerException
-arguments
がnullである場合。IllegalArgumentException
-arguments
配列内の引数が、それを使用するフォーマット要素によって予測された型でない場合。- 導入されたバージョン:
- 1.4
-
parse
public Object[] parse(String source, ParsePosition pos) 文字列を解析します。注意: 解析はさまざまな原因のために、うまく動作しないことがあります。 たとえば、
- 引数の1つがパターンにない。
- 大きな数字が"many"にフォーマットされるようなchoiceフォーマットなどで、引数のフォーマットが情報を失う。
- 繰返しをまだ処理しない(置き換える文字列に{n}個の参照がある場合)。
- 解析の一部があいまいなとき、一致(または正しい一致)が必ずしも見つからない。 たとえば、パターン「{1},{2}」を文字列引数{"a,b", "c"}で使用する場合は、「a,b,c」とフォーマットされる。 その結果が解析されると、{"a", "b,c"}が返される。
- 1つの引数が文字列内で複数回解析されると、あとの解析が優位になる。
- パラメータ:
source
- 解析する文字列pos
- 解析位置- 戻り値:
- 解析されたオブジェクトの配列
- 例外:
NullPointerException
-pos
がnull以外のsource
文字列のnull
である場合。
-
parse
public Object[] parse(String source) throws ParseException 指定された文字列の先頭からテキストを解析してオブジェクト配列を生成します。 メソッドは指定された文字列のテキスト全体に使用されない場合もあります。メッセージの解析の詳細については、
parse(String, ParsePosition)
メソッドを参照してください。- パラメータ:
source
- 先頭が解析されるString
。- 戻り値:
- 文字列から解析される
Object
配列。 - 例外:
ParseException
- 指定された文字列の先頭が解析できない場合。
-
parseObject
public Object parseObject(String source, ParsePosition pos) 文字列からテキストを解析してオブジェクト配列を生成します。メソッドは
pos
によって指定されたインデックスを開始位置としてテキストの解析を試みます。 解析が完了すると、pos
のインデックスは、使用された最後の文字(解析では、文字列の最後までのすべての文字が使用されるとは限らない)のあとのインデックスに更新され、解析されたオブジェクト配列が返されます。 更新されたpos
は、このメソッドの次の呼出しの開始点を示すのに使用できます。 エラーが発生した場合は、pos
のインデックスは変更されず、エラーが発生した文字のインデックスにpos
のエラー・インデックスが設定され、nullが返されます。メッセージの解析の詳細については、
parse(String, ParsePosition)
メソッドを参照してください。- 定義:
parseObject
、クラスFormat
- パラメータ:
source
- 部分的に解析されるString
。pos
- 上記のインデックスおよびエラー・インデックス情報を持つParsePosition
オブジェクト- 戻り値:
- 文字列から解析される
Object
配列。 エラーの場合はnullを返す。 - 例外:
NullPointerException
-pos
がnullである場合。
-
clone
-
equals
public boolean equals(Object obj) 指定されたオブジェクトをこのMessageFormat
と比較し、等しいかどうかを確認します。 オブジェクトがMessageFormat
でもあり、2つの書式で値が同じ書式である場合、trueを返します。 -
hashCode
public int hashCode()このMessageFormat
のハッシュ・コード値を返します。- オーバーライド:
hashCode
、クラスObject
- 実装要件:
- このメソッドは、
toPattern()
から返された値を使用してハッシュ・コード値を計算します。 - 戻り値:
- この
MessageFormat
のハッシュ・コード値 - 関連項目:
-
toString
-