2

次のような文字列があります。

ABC {有名なマジシャン} が {0} で {1} 時間パフォーマンスします。

中かっこの最初のペアのプレースホルダーはありません。プレースホルダー {0} と {1} を置き換える 2 つの文字列を含むオブジェクト配列を使用して、この文字列を MessageFormat.format(String, Object[]) メソッドに渡すと、次のエラーが発生します。

java.lang.IllegalArgumentException: すべての引数識別子は、負でない数値またはパターン ([:ID_Start:] [:ID_Continue:]*) に従った文字列でなければなりません。

中括弧の最初のペアが最初のプレースホルダーとして解析されているように見えますが、有効なプレースホルダーではないため、エラーが発生します。

MessageFormat.format に最初の中かっこのペアを無視し、残りの 2 つを処理するように指示するにはどうすればよいですか?

4

1 に答える 1

8

パラメーター プレースホルダーとして扱いたくない部分を一重引用符で囲みます。すなわち

ABC '{A WELL-KNOWN MAGICIAN}' WILL PERFORM AT {0} FOR {1} HOURS.
于 2014-05-04T10:33:56.717 に答える