GWT - 在默认语言环境中格式化数字,而不管选择的语言环境

时间:2016-04-09 08:55:24

标签: java gwt internationalization

我尝试使用GWT的NumberFormat格式化和解析数字,但我想使用默认格式(例如EN语言环境的格式),无论用户选择的语言环境如何,因此用户可以选择任何语言,但我希望使用默认格式显示和解析数字(例如1,234.89)。

有办法做到这一点吗?

编辑:

对于前。此代码仅适用于EN语言环境,在RU中我得到NumberFormatException

NumberFormat format = NumberFormat.getFormat("#,##0.00");
String n = "1,234.89"; 
double value = format.parse(n);
//do something with value...

我需要为locale EN获取一个NumberFormat实例,但我无法在javadocs中找到任何可以执行此操作的方法/构造函数。

1 个答案:

答案 0 :(得分:0)

NumberFormat始终解析本地化文本。它使用NumberConstants根据当前语言环境通过延迟绑定实例化。很遗憾,您无法强行使用其他NumberConstants

但是你知道默认的分组分隔符(,)和小数分隔符(.)。您还可以获取当前区域设置的分组和小数分隔符。所以你只需要在解析之前替换它们。

String n = "1,234.89";
n = n.replace(",", LocaleInfo.getCurrentLocale().getNumberConstants().groupingSeparator());
n = n.replace(".", LocaleInfo.getCurrentLocale().getNumberConstants().decimalSeparator());
double value = format.parse(n);

这适用于任何语言环境。

要使用默认语言环境格式化数字,只需在当前语言环境格式化后执行相反的替换。