2013-08-16 172 views
0

我已經經歷了這麼看着,但還沒有找到一個答案,與我相似的問題。格式化字符串匹配模式

我需要的格式貨幣取決於語言環境。

例子:

我有量11349和我的語言環境是某處在美國。我從我們的CMS拉格式如下:$#,##0.00

我需要使用模板來獲取量「11349」,看起來像這樣:$11,349.00

沒有人有任何想法如何處理呢?如果已經有關於SO的問題解決這個問題,我表示歉意 - 我沒有找到它,如果您能指出我的位置,我將不勝感激。

回答

4

NumberFormat支持Locales併產生格式化按您的問題加上使用正則表達式避免:

Locale locale = new Locale("en", "US"); 
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale); 
System.out.println(fmt.format(11349)); 
+0

我會將此標記爲接受的答案。然而 - 我忘了我的問題提這個 - 你當你使用'的格式並不總是那些NumberFormat.getCurrencyInstance(區域)' 對於我的具體問題,[葉夫根尼·Dorofeev的(HTTP://計算器.com/a/18274215/1073118)答案很可能最有效。 謝謝你,不過,這個答案是乾淨的,可讀的:) – Skytiger

0

使用的語言環境( 「恩」, 「US」)

Locale locale = new Locale("en", "US"); 
NumberFormat nf = NumberFormat.getCurrencyInstance(locale); //getting currency 
System.out.println(nf.format("11349")); //cast string to numberFormat 

然後你會得到輸出爲

$11,349.00 
+0

你爲什麼要在一個BigDecimal包裝呢? – Lebowski156

1

如果您的語言環境是美國,那麼這應該產生要求d結果

String s = new DecimalFormat("$#,##0.00").format(11348); 
+0

謝謝!它將如何處理浮動? 如果我通過了吧'883.0',例如? – Skytiger

+0

$ 883.00此模式定義數字在小數點後總是有2位數字。 –