Как избежать UnsupportedOperationException при получении символов процента? - PullRequest
0 голосов
/ 22 мая 2019

Я пытался получить символ процента, специфичный для локали.Мои журналы сбоев показывают «UnsupportedOperationException» при попытке получить getPercent из DecimalFormatSymbols.

Я использовал экземпляр NumberFormat для данной локали и получил символ процента с помощью метода getPercent DecimalFormatSymbols.

    {
        DecimalFormat decimalFormat = (DecimalFormat)NumberFormat.getInstance(currentLocale);
        return String.valueOf(decimalFormat.getDecimalFormatSymbols().getPercent());
    } 

Я ожидалсимвол процента, специфичный для локали, но для некоторых локалей я получаю следующее исключение

       at java.text.DecimalFormatSymbols.getPercent(DecimalFormatSymbols.java:352

Я проверил метод getPercent () класса DecimalFormatSymbols,

public char getPercent() {
        if (percent.length() == 1) {
            return percent.charAt(0);
        }
        throw new UnsupportedOperationException("Percent spans multiple characters: " + percent);
    }

Похож на символ процентаlength! = 1, это происходит для арабских символов.

1 Ответ

0 голосов
/ 22 мая 2019

при просмотре класса DecimalFormatSymbols , метод .getPercent() просто возвращает знак % ...

для арабского языка, вам может понадобиться сначала позвонить .setPercent("٪"), чтобы .getPercent() вернул ٪.

В Java это Character.charCount() равно 1.

...