2012-12-07 45 views
6

是否可以使用與NumberFormat.format相同的方式對String.format中的數字進行本地化?java String.format:帶本地化的數字

我希望它只是使用

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

但如果使用的NumberFormat這不返回相同的結果。例如:

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

給出了: 「1234567890」,而

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

給出了: 「1.234.567.890」

如果不能做到,我們推薦什麼樣的方式進行本地化的文本,包括號碼?

+2

你爲什麼不分析你的「串號」成若干個第一,做數字格式化後的格式? – Chris

+0

我的「字符串數字」可以是一個包含數字的字符串,所以我無法將其解析爲數字。 – wziska

回答

9

documentation,你必須:

  • 供應區域(如你在你的例子做)
  • 包括「」標誌顯示區域設置特定的分組分隔

所以,你的例子將成爲:

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

請注意'd'之前的附加','標誌。

+0

完美!不知道我是如何錯過閱讀文檔的。 – wziska

2

String.format()另一種方法是使用的MessageFormat:

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