How to get the pattern of Number Format of a specific locale?

后端 未结 2 1757
一整个雨季
一整个雨季 2020-12-21 04:34

I have a simple question:

How to get the pattern used to format a number using NumberFormat created for a specific locale as shown below:



        
相关标签:
2条回答
  • 2020-12-21 05:08

    NumberFormat is an interface so there can be multiple implementations.

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

    Please note that this will work today, but may break in the future when other implementations are added.

    0 讨论(0)
  • 2020-12-21 05:18

    The subclasses DecimalFormat and ChoiceFormat have a method toPattern(), so you must check using instanceof and call toPattern()

      String pattern = null;
       if (numberFormat instanceof DecimalFormat) {
           pattern = ((DecimalFormat)numberFormat).toPattern();
       }
    

    Consider DecimalFormat.toLocalizedPattern() too

    0 讨论(0)
提交回复
热议问题