我有一个号码必须按照模板转换为特定格式的字符串。
模板为xxx.xxx.xxx-xx。例如,如果数字是94322467,则应将其转换为000.943.224-67。
在Java中执行此操作的正确方法是什么?
我最终使用的是因为我的代码是@biziclop和@style答案的混合。
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('-');
formatSymbols.setGroupingSeparator('.');
DecimalFormat myFormatter = new DecimalFormat("000000,000.00", formatSymbols);
String cpfString = myFormatter.format(longNumber / 100.0);
答案 0 :(得分:3)
java.text.DecimalFormat
是要走的路。
虽然如果您的号码总是固定长度(即,如果它更短,则用零填充),最好使用DecimalFormat
格式化普通数字(00000000000
是您的模式case)并将分隔符手动插入已知的固定位置。
不幸的是DecimalFormat
无法处理任意数字分组,因此您必须手动插入分隔符字符。
如果您的号码甚至不能保证固定长度,您必须从头开始编写格式化程序。
答案 1 :(得分:3)
我会做这样的事情:
long x = 123456789;
String s = String.format("%,d-%02d", x / 100, x % 100);
String out = ("000.000.000-00" + s.replace(",", ".")).substring(s.length());
System.out.println(out);
这会产生你想要的结果:
001.234.567-89