我尝试使用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中找到任何可以执行此操作的方法/构造函数。
答案 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);
这适用于任何语言环境。
要使用默认语言环境格式化数字,只需在当前语言环境格式化后执行相反的替换。