Как оставить целые числа pad с помощью форматера с точками? - PullRequest
1 голос
/ 31 мая 2011

Я знаю, что мы можем использовать целые числа в левой части с помощью форматера, подобного следующему:

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

Но как заменить нули на точки (например, индекс содержимого в виде простого текста)?

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

Я хочу создать это:

..........234

Я знаю, что могу использовать цикл для добавления точек, но я хочу знать, есть ли способ сделать это с помощью средства форматирования.

Ответы [ 4 ]

3 голосов
/ 31 мая 2011

Я думаю, что нет такого встроенного отступа ., но вы можете заполнить пробелами и затем заменить их.

 String.format("%15d", 234).replaceAll(' ', '.');
1 голос
/ 31 мая 2011

Другой способ сделать это - использовать 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 уже указал на это ...

1 голос
/ 31 мая 2011

Нет никакого способа сделать это только с одним форматтером, но

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

вполне подойдет.

(Естественно, тогда вам нужно сделать что-тосо строкой - этот объект создает объект String, который затем исчезает, поскольку это ничего не присваивает.)

Обновление

Черт, забыл повтор * в регулярном выражении.

0 голосов
/ 31 мая 2011

Вы можете сделать это вручную.Это не красиво, но это работает.

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