我有一个简单的问题:
如何使用为特定语言环境创建的NumberFormat
获取用于格式化数字的模式,如下所示:
import java.util.Locale;
Locale aLocale = new Locale("fr","CA");
NumberFormat numberFormat=NumberFormat.getNumberInstance(aLocale);
这里我想知道French
语言中用于格式化数字的模式和Canada
的国家。
例如:
数字123456.7890
格式化后转换为123 456,789
,表示上述区域的模式可能为# ###,###
。
子类DecimalFormat和ChoiceFormat有一个方法toppattern(),所以你必须使用instanceof检查并调用toppattern ()
String pattern = null;
if (numberFormat instanceof DecimalFormat) {
pattern = ((DecimalFormat)numberFormat).toPattern();
}
也考虑DecimalFormat.toLocalizedPattern()
NumberFormat
是一个接口,因此可以有多个实现。
public String getPattern(NumberFormat numberFormat) {
if(numberFormat instanceof java.text.DecimalFormat)
return ((java.text.DecimalFormat)numberFormat).toPattern();
if(numberFormat instanceof java.text.ChoiceFormat)
return ((java.text.ChoiceFormat)numberFormat).toPattern();
throw new IllegalArgumentException("Unknown NumberFormat implementation");
}
请注意,这将在今天工作,但可能会打破在未来的其他实现添加。