2012-12-07 13 views
6

Czy możliwe jest zlokalizowanie liczb w String.format wywołanie w taki sam sposób jak robi NumberFormat.format?java String.format: numery z lokalizacją

mam oczekiwać go po prostu używać

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

ale to nie zwraca ten sam wynik, jak w przypadku korzystania NumberFormat. Na przykład:

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

daje: "1234567890", a

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

daje: "1.234.567.890"

Jeśli nie można tego zrobić, co zaleca drogę do lokalizacji tekstu w tym liczby?

+2

dlaczego nie można analizować swoje „String-Number” w pierwszym szeregu i zrobić formatowanie z numerem formater później? – Chris

+0

Mój "numer-ciągu" może być ciągiem zawierającym numer, więc nie mogę go sparsować na numer. – wziska

Odpowiedz

9

Z documentation, trzeba:

  • podaży Locale (jak robisz na swoim przykładzie)
  • obejmować '' flagę do występów ustawień narodowych separatorów grupowania

Więc przykładem może stać się:

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

Zwróć uwagę na dodatkową flagę "," przed "d".

+0

Idealny! Nie wiem, jak mi brakowało czytania dokumentacji. – wziska

2

Alternatywą String.format() jest użycie MessageFormat:

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