Отформатируйте целое число, используя формат строки Java - PullRequest
115 голосов
/ 17 мая 2011

Мне интересно, возможно ли с помощью метода String.format в Java дать целые числа, предшествующие нулям?

Например:

1 станет 0012 станет 002...11 станет 01112 станет 012...526 останется как 526...так далее

На данный момент я попробовал следующий код:

String imageName = "_%3d" + "_%s";

for( int i = 0; i < 1000; i++ ){
    System.out.println( String.format( imageName, i, "foo" ) );
}

К сожалению, этому числу предшествует 3 пустых пробела.Можно ли вместо числа ставить нули вместо?

Ответы [ 3 ]

189 голосов
/ 17 мая 2011
String.format("%03d", 1); // => "001"
//              │││   └── print the number one
//              ││└────── ... as a decimal integer
//              │└─────── ... minimum of 3 characters wide
//              └──────── ... pad with zeroes instead of spaces

См. java.util.Formatter для получения дополнительной информации.

163 голосов
/ 17 мая 2011

Используйте %03d в спецификаторе формата для целого числа. 0 означает, что число будет заполнено нулями, если оно меньше трех (в данном случае) цифр.

См. Документы Formatter для других модификаторов.

10 голосов
/ 09 июля 2013

Если вы используете стороннюю библиотеку под названием apache commons-lang, может оказаться полезным следующее решение:

Использование StringUtils класса apache commons-lang :

int i = 5;
StringUtils.leftPad(String.valueOf(i), 3, "0"); // --> "005"

Поскольку StringUtils.leftPad() быстрее String.format()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...