如何获取特定区域设置的数字格式模式?
我有一个简单的问题:
如何使用为特定语言环境创建的NumberFormat
来获取用于格式化数字的模式,如下所示:
import java.util.Locale; Locale aLocale = new Locale("fr","CA"); NumberFormat numberFormat=NumberFormat.getNumberInstance(aLocale);
在这里,我想知道用于格式化French
和Canada
国家号码的模式。
例如:
格式化后,将数字123456.7890
转换为123 456,789
,这意味着对于上述语言环境# ###,###
模式可能是123 456,789
# ###,###
。
子类DecimalFormat和ChoiceFormat有一个方法toPattern(),所以你必须检查使用instanceof并调用toPattern()
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"); }
请注意,这将在今天工作,但在将来添加其他实现时可能会中断。