使用多个点分组分隔符格式化数字

我需要验证显示的字符串是否为数字。该值的格式为 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:无法将给定对象格式化为数字


我也试过添加


formatter.applyPattern("###,###,###.##");

但它没有帮助。


有任何想法吗?


我猜我也可以使用正则表达式,但如果可能的话我想首先使用它DecimalFormatter。


波斯汪
浏览 102回答 1
1回答

慕桂英3389331

我会丢失货币,只是明确地DecimalFormat用相关符号创建一个新货币。一旦你有了它,你应该用它来解析传入的字符串,而不是格式化它:DecimalFormatSymbols dfs = new DecimalFormatSymbols();dfs.setDecimalSeparator(',');dfs.setGroupingSeparator('.');DecimalFormat df = new DecimalFormat();df.setDecimalFormatSymbols(dfs);System.out.println(df.parse(stringToTest));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java