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



我有一个简单的问题:

如何使用为特定语言环境创建的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");
}

请注意,这将在今天工作,但可能会打破在未来的其他实现添加。

相关内容

  • 没有找到相关文章

最新更新