Как изменить разделитель группировки (тысячи) DecimalFormat с запятой / точки на кавычки, используя шаблоны? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть этот фрагмент кода, где я пытаюсь заменить разделитель тысяч (.) Для кавычки (') следующим шаблоном: ###' ###, ##

import java.text.*;

  public class NumberFormatTests
  {
    public static void main (String[] args)
    {
      double amount = 100100.543;
      NumberFormat nf = new DecimalFormat("###'###.##");
      System.out.println( "amount with    formatting: " + nf.format(amount) );
    }
  }

но я получаю эту ошибку:

Исключение в потоке "main" java.lang.IllegalArgumentException: искаженный шаблон "### '###. ##" в java.text.DecimalFormat.applyPattern (DecimalFormat.java:3411) в java.text.DecimalFormat. (DecimalFormat.java:436) в NumberFormatTests.main (NumberFormatTests.java:8)

Я знаю, что это можно изменитьпрограммно с помощью DecimalFormatSymbols примерно так:

import java.text.*;
import java.util.Locale;

  public class NumberFormatTests
  {
    public static void main (String[] args)
    {
      double amount = 100100.543;

      Locale currentLocale = new Locale("de", "DE");
      DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale);
      unusualSymbols.setGroupingSeparator('\'');

      NumberFormat nf = new DecimalFormat("###,###.##", unusualSymbols);
      System.out.println( "amount with    formatting: " + nf.format(amount) );
    }
  }

, но мне нужно найти способ сделать это в шаблоне, что-то вроде "### '###. ##",Я уже пробовал "### '' ###. ##", но кавычка добавляется как суффикс.

Есть ли способ заменить разделитель тысяч уже внутри шаблона, а не программно?

1 Ответ

0 голосов
/ 24 октября 2018

Можете ли вы использовать вместо этого подкласс DecimalFormat?Вы можете проанализировать шаблон в подклассе и извлечь из шаблона необычный разделитель группировки.При вызове метода форматирования подкласса вы можете использовать этот разделитель группировки с исходным десятичным форматом, как показано в вашем собственном примере кода.Это результат, который возвращается методом форматирования подкласса.

...