2013-08-16 171 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位数字。 –