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

我有一个简单的问题:

如何使用为特定语言环境创建的NumberFormat来获取用于格式化数字的模式,如下所示:

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

在这里,我想知道用于格式化FrenchCanada国家号码的模式。

例如:

格式化后,将数字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"); } 

请注意,这将在今天工作,但在将来添加其他实现时可能会中断。