在发布问题之前,我已经对该主题进行了一些研究,但找不到答案。
这是我正在尝试做的事情:
输入:一个 7-8 个小数位长的数字(无分数)。
输出:“X XXXXXX X”,其中 X 是一个数字,必须存在。
例如:1234567 => 0 123456 7
我尝试了什么:
DecimalFormatSymbols group = new DecimalFormatSymbols();
group.setGroupingSeparator(' ');
DecimalFormat idFormat = new DecimalFormat("0,000000,0", group);
但这会打印出类似“0 1 2 3 4 5 6 7”的东西:S我做错了什么?
编辑:
如果我这样做,我可以打印我需要的东西:
DecimalFormatSymbols group = new DecimalFormatSymbols();
group.setGroupingSeparator(' ');
group.setDecimalSeparator(' ');
DecimalFormat idFormat = new DecimalFormat("0,000000.0", group);
通过重新阅读手册,我意识到 DecimalFormat 没有办法打印可变长度组(幸运的是我只需要 2 个 - 所以我可以使用小数部分)。但是你将如何“正确”地做到这一点?在这里使用正则表达式/编写我自己的函数可以吗,或者是否有库已经这样做了?
编辑2:
只是为了好玩,下面是基于正则表达式的方法:)
Random random = new Random();
System.out.println(
String.valueOf(Math.round(random.nextDouble() * 1e8))
.replaceAll("(.*)(\\d{6})(\\d)$", "$1 $2 $3")
.replaceAll("^ ", "0 "));