带有货币符号的Java String.format

时间:2012-05-31 02:51:14

标签: java locale

以下格式的现有代码用于格式数值:

String.format( pattern, value )

请注意,我无法更改代码本身 - 我只能更改提供给代码的格式模式。

输出默认语言环境的货币符号的格式模式是什么?基本上,我想实现以下输出:

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

5 个答案:

答案 0 :(得分:12)

无需重新发明轮子。 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 €

答案 1 :(得分:5)

您可以尝试以下操作:

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 €

答案 2 :(得分:4)

由于你给出的限制,我认为不可能实现它。 要获取当前Locale的货币符号,您只需要至少代码。

如果您绝对无法向程序添加代码,则最好使用已建立的符号“currency”(¤)。它是为了这个目的而建立的,象征着没有任何更具体符号的货币。

如果您无法更改给定代码,但是将代码作为一个整体添加到项目中,则可以使用它来查找最佳使用的符号。获得后,您可以使用它为现有代码创建用于格式化的模式。

如果您可以找到原始程序将在下一个程序中运行的Locale,您可以编写一个使用该设置填充配置的助手程序。

答案 3 :(得分:1)

如果没有可用的默认区域设置,我们可以使用unicode和decimal格式设置货币符号。如下面的代码所示:

例如设置印度货币符号并格式化值。这将在没有用户更改设置的情况下工作。

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

答案 4 :(得分:-3)

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