Frage Java String.format: Zahlen mit Lokalisierung


Ist es möglich, Zahlen in String.format zu lokalisieren, so wie NumberFormat.format?

Ich habe es einfach zu benutzen erwartet

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

aber dies liefert nicht das gleiche Ergebnis wie bei der Verwendung von NumberFormat. Beispielsweise:

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

gibt: "1234567890", während

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

gibt: "1.234.567.890"

Wenn es nicht möglich ist, was ist die empfohlene Methode zum Lokalisieren von Text einschließlich Zahlen?


8
2017-12-07 13:06


Ursprung


Antworten:


Von dem Dokumentation, Sie müssen:

  • ein Gebietsschema angeben (wie Sie es in Ihrem Beispiel tun)
  • Fügen Sie die ',' Flagge hinzu Zeige Gebietsschema-spezifische Gruppierungstrennzeichen 

So würde dein Beispiel werden:

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

Beachten Sie die zusätzliche ',' Flagge vor dem 'd'.


13
2017-12-07 13:12



Eine Alternative zu String.format() Verwenden Sie MessageFormat:

MessageFormat format = new MessageFormat("The number is {0, number}", Locale.GERMAN);
String s = format.format(new Object[] {number});

2
2017-12-07 13:18