如何使用带点的格式化程序保留pad整数?

时间:2011-05-30 21:09:32

标签: java formatter

我知道我们可以使用这样的格式化程序左键整数:

String.format("%7d", 234);   // "    234"
String.format("%07d", 234);  // "0000234"
String.format("%015d", 234); // "0000000000000234"

但是,如何用点替换零(如纯文本内容索引)?

String.format("%.13d", 234); // doesn't work

我想制作这个:

..........234

我知道我可以使用循环来添加点,但我想知道是否有办法用格式化程序执行此操作。

4 个答案:

答案 0 :(得分:3)

我认为没有这样的.填充内置,但您可以使用空格填充然后替换它们。

 String.format("%15d", 234).replaceAll(' ', '.');

答案 1 :(得分:1)

单独使用格式化板无法做到,但

String.format("%015d", 234).replaceFirst("0*","\.");

应该没问题。

(当然,你必须字符串的东西 - 这个产生一个String对象然后消失,因为这不会分配给任何东西。)

更新

该死的,忘了在正则表达式中重复*

答案 2 :(得分:1)

另一种方法是使用Apache Commons Lang lib。 http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html#leftPad%28java.lang.String,%20int,%20char%29

grundprinzip已经指出了......

答案 3 :(得分:0)

您可以手动执行此操作。它不漂亮,但它有效。

String str = Integer.toString( 234 );
str = "...............".substring( 0, Math.max( 0, 15 - str.length() ) ) + str;