我正在使用NumberFormat.getCurrencyInstance(myLocale)为我给定的语言环境获取自定义货币格式。但是,这总是包括我不想要的货币符号,我只想要为我的给定区域设置正确的货币数字格式,而不是货币符号。
执行format.setCurrencySymbol(null)会抛出异常..
发布于 2011-12-29 00:18:45
以下是有效的方法。它有点难看,但它满足了合同的要求:
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));发布于 2011-12-29 00:17:25
改为使用空字符串进行设置:
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发布于 2019-04-25 22:35:05
例如,给定的解决方案有效,但最终为欧元留下了一些空格。我最终做了:
numberFormat.format(myNumber).replaceAll("[^0123456789.,]","");这确保了我们具有不带货币或任何其他符号的数字的货币格式。
https://stackoverflow.com/questions/8658205
复制相似问题