Java 使用多个点编组分隔符格式化数字
我需要验证显示的字符串是否为数字。该值的格式为123.345.678,99。 也就是说,分组分隔符是点,小数分隔符是逗号 我在设置分隔符的地方尝试了DecimalFormatter:Java 使用多个点编组分隔符格式化数字,java,format,decimalformat,Java,Format,Decimalformat,我需要验证显示的字符串是否为数字。该值的格式为123.345.678,99。 也就是说,分组分隔符是点,小数分隔符是逗号 我在设置分隔符的地方尝试了DecimalFormatter: DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance(); DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols(); sym
DecimalFormat formatter = (DecimalFormat) NumberFormat.getCurrencyInstance();
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(',');
formatter.setDecimalFormatSymbols(symbols);
formatter.setGroupingUsed(true);
System.out.println(formatter.format(incoming));
然而,在这种情况下,我得到了
java.lang.IllegalArgumentException:无法将给定对象格式化为数字
我也试着补充一下
formatter.applyPattern("###,###,###.##");
但这没用
有什么想法吗
我想我也可以使用regexp,但如果可能的话,我想首先使用这个
分码格式。我会失去货币,然后直接用相关符号创建一个新的分码格式。一旦你有了它,你应该用它来解析传入的字符串,而不是格式化它:
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
dfs.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat();
df.setDecimalFormatSymbols(dfs);
System.out.println(df.parse(stringToTest));
我认为您需要的方法是parse
,而不是format
。它们是对立的。这个问题和硒有什么关系?我错过什么了吗?谢谢!这起作用了:)对不起,我要去掉“Selenium”标签。