将long转换为字符串跟随模板

时间:2014-09-01 14:19:16

标签: java string long-integer

我有一个号码必须按照模板转换为特定格式的字符串。

模板为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);

2 个答案:

答案 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