如何获取特定地区的数字格式模式?

4

我有一个简单的问题:

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

import java.util.Locale;

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

我想了解在法语加拿大地区格式化数字的模式。

例如:

一个数字123456.7890在格式化后变成123 456,789,这意味着上述区域的模式可能是# ###,###


你需要什么?它的字符串表示形式吗? - fge
不,我想知道为这个数字格式定义的模式。例如,像这样 #,###.00 - Braj
2个回答

7
子类 DecimalFormat 和 ChoiceFormat 都有一个 toPattern() 方法,因此您需要使用 instanceof 进行检查,并调用 toPattern()。
  String pattern = null;
   if (numberFormat instanceof DecimalFormat) {
       pattern = ((DecimalFormat)numberFormat).toPattern();
   }

考虑使用DecimalFormat.toLocalizedPattern()。

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

请注意,这个方法现在可能有效,但是当其他实现方式添加进来时,可能会出问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接