设置不带货币符号的货币格式

2022-08-31 14:09:56

我正在使用为我提供的区域设置获取自定义货币格式。但是,这始终包括我不想要的货币符号,我只想为给定的区域设置提供正确的货币数字格式,而无需货币符号。NumberFormat.getCurrencyInstance(myLocale)

执行 a 操作会引发异常。format.setCurrencySymbol(null)


答案 1

以下工作。这有点丑陋,但它履行了合同:

NumberFormat nf = NumberFormat.getCurrencyInstance();
DecimalFormatSymbols decimalFormatSymbols = ((DecimalFormat) nf).getDecimalFormatSymbols();
decimalFormatSymbols.setCurrencySymbol("");
((DecimalFormat) nf).setDecimalFormatSymbols(decimalFormatSymbols);
System.out.println(nf.format(12345.124).trim());

您还可以从货币格式中获取模式,删除货币符号,然后从新模式中重建新格式:

NumberFormat nf = NumberFormat.getCurrencyInstance();
String pattern = ((DecimalFormat) nf).toPattern();
String newPattern = pattern.replace("\u00A4", "").trim();
NumberFormat newFormat = new DecimalFormat(newPattern);
System.out.println(newFormat.format(12345.124));

答案 2

改为使用空字符串设置它:

DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setCurrencySymbol(""); // Don't use null.
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(12.3456)); // 12.35