Java String.format с символом валюты
Существует несколько существующего кода следующей формы, которая используется для числовых значений формата:
String.format( pattern, value )
Обратите внимание, что я не может изменить сам код. Я могу изменить только шаблон формата, указанный в коде.
Каков шаблон формата для вывода символа валюты для языкового стандарта по умолчанию? По сути, я хочу достичь следующего результата:
String.format( "...", 123 ) => $ 123
Ответы
Ответ 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);