如何获取特定区域设置的数字格式模式?

时间:2014-03-19 17:26:35

标签: java locale number-formatting

我有一个简单的问题:

如何使用为特定区域设置创建的NumberFormat来设置用于格式化数字的模式,如下所示:

import java.util.Locale;

Locale aLocale = new Locale("fr","CA");
NumberFormat numberFormat=NumberFormat.getNumberInstance(aLocale);

在此,我想了解用于格式化French语言和Canada国家/地区的数字的模式。

例如:

格式化后,123456.7890转换为123 456,789,表示上述区域设置的格式可能为# ###,###

2 个答案:

答案 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");
}

请注意,这将在今天使用,但在将来添加其他实施时可能会中断。