我有一个简单的问题:
如何使用为特定区域设置创建的NumberFormat
来设置用于格式化数字的模式,如下所示:
import java.util.Locale;
Locale aLocale = new Locale("fr","CA");
NumberFormat numberFormat=NumberFormat.getNumberInstance(aLocale);
在此,我想了解用于格式化French
语言和Canada
国家/地区的数字的模式。
例如:
格式化后,123456.7890
转换为123 456,789
,表示上述区域设置的格式可能为# ###,###
。
答案 0 :(得分:6)
子类DecimalFormat和ChoiceFormat有一个方法toPattern(),所以你必须检查使用instanceof并调用toPattern()
String pattern = null;
if (numberFormat instanceof DecimalFormat) {
pattern = ((DecimalFormat)numberFormat).toPattern();
}
考虑使用DecimalFormat.toLocalizedPattern()
答案 1 :(得分:0)
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");
}
请注意,这将在今天使用,但在将来添加其他实施时可能会中断。