18

通話中の番号をローカライズするString.formatのと同じ方法は可能NumberFormat.formatですか?

私はそれが単に使用することを期待していました

String.format(locale, "%d", number)

しかし、これは と同じ結果を返しませんNumberFormat。例えば:

String.format(Locale.GERMAN, "%d", 1234567890) 

与えます:「1234567890」、一方

NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890)

与える:「1.234.567.890」

それができない場合、数字を含むテキストをローカライズするための推奨される方法は何ですか?

4

2 に答える 2

31

ドキュメントから、次のことを行う必要があります。

  • ロケールを提供します(例で行っているように)
  • ,' ' フラグを含めて、ロケール固有のグループ区切り記号を表示します

したがって、あなたの例は次のようになります。

String.format(Locale.GERMAN, "%,d", 1234567890) 

,「d」の前に「 」フラグが追加されていることに注意してください。

于 2012-12-07T13:12:56.923 に答える
5

代わりにString.format()MessageFormat を使用することもできます:

MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN);
String s = format.format(new Object[] {number});
于 2012-12-07T13:18:55.760 に答える