使用多个点分组分隔符格式化数字
Format number with multiple dot grouping separators
我需要验证显示的字符串是否为数字。该值的格式为 123.345.678,99。
即,分组分隔符是点,小数点分隔符是逗号。
我试过设置分隔符的 DecimalFormatter:
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: Cannot format given Object as Number
我也试过添加
formatter.applyPattern("###,###,###.##");
但没有用。
有什么想法吗?
我想我也可以使用正则表达式,但如果可能的话我想首先使用这个 DecimalFormatter
。
我会丢掉货币,然后用相关符号明确地创建一个新的 DecimalFormat
。一旦你有了它,你应该用它来 parse 传入的字符串,而不是 format it:
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
dfs.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat();
df.setDecimalFormatSymbols(dfs);
System.out.println(df.parse(stringToTest));
我需要验证显示的字符串是否为数字。该值的格式为 123.345.678,99。 即,分组分隔符是点,小数点分隔符是逗号。
我试过设置分隔符的 DecimalFormatter:
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: Cannot format given Object as Number
我也试过添加
formatter.applyPattern("###,###,###.##");
但没有用。
有什么想法吗?
我想我也可以使用正则表达式,但如果可能的话我想首先使用这个 DecimalFormatter
。
我会丢掉货币,然后用相关符号明确地创建一个新的 DecimalFormat
。一旦你有了它,你应该用它来 parse 传入的字符串,而不是 format it:
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator(',');
dfs.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat();
df.setDecimalFormatSymbols(dfs);
System.out.println(df.parse(stringToTest));