Подтвердить что ты не робот

Java String.format с символом валюты

Существует несколько существующего кода следующей формы, которая используется для числовых значений формата:

String.format( pattern, value )

Обратите внимание, что я не может изменить сам код. Я могу изменить только шаблон формата, указанный в коде.

Каков шаблон формата для вывода символа валюты для языкового стандарта по умолчанию? По сути, я хочу достичь следующего результата:

String.format( "...", 123 )  => $ 123
4b9b3361

Ответ 1

С ограничениями, которые вы указали, я думаю, что этого достичь невозможно. Чтобы перейти к текущему символу валюты Locale, вам понадобится минимум кода.

Если у вас нет абсолютно никаких средств для добавления кода в программу, лучше всего использовать установленный символ для currency" ¤). Это было установлено для этой конкретной цели, чтобы символизировать валюту, не имеющую более специфического символа.

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

Если вы узнаете, в каком Locale будет запускаться исходная программа, вы можете написать программу-ассистент, которая использует этот параметр для заполнения вашей конфигурации.

Ответ 2

Не нужно изобретать велосипед. DecimalFormat поставляется с поддержкой валюты:

String output = DecimalFormat.getCurrencyInstance().format(123.45);

Это также поставляется с полной поддержкой языкового стандарта, необязательно передавая Locale:

String output = DecimalFormat.getCurrencyInstance(Locale.GERMANY).format( 123.45);

Здесь тест:

System.out.println(DecimalFormat.getCurrencyInstance().format( 123.45) );
System.out.println(DecimalFormat.getCurrencyInstance(Locale.GERMANY).format( 123.45)) ;

Вывод:

$123.45
123,45 €

Ответ 3

Вы можете попробовать следующее:

public static void main(String[] args) {
    System.out.println(String.format(" %d \u20AC", 123)); // %d for integer
    System.out.println(String.format(" %.2f \u20AC", 123.10)); // %f for floats
}

Отпечатки:

123 €
123.10 €

Ответ 4

Если доступ к локали по умолчанию отсутствует, мы можем пойти с настройкой символа валюты, используя уникод и десятичное форматирование. Как и в приведенном ниже коде:

Например, Установка символа индийской валюты и форматирование значения. Это будет работать без внесения пользователем изменений в настройки.

Locale locale = new Locale("en","IN");
DecimalFormat decimalFormat = (DecimalFormat) DecimalFormat.getCurrencyInstance(locale);
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(locale);
dfs.setCurrencySymbol("\u20B9");
decimalFormat.setDecimalFormatSymbols(dfs);
System.out.println(decimalFormat.format(12324.13));

Вывод:

₹12,324.13

Ответ 5

    String formatstring=String.format("$%s", 123);
    System.out.println(formatstring);