Відформатуйте ціле число за допомогою String Format Java


129

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

Наприклад:

1 стане 001
2 стане 002
...
11 стане 011
12 стане 012
...
526 залишиться як 526
... і т.д.

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

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

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

На жаль, цьому передує число з 3 порожніми пробілами. Чи можливо попереднє число замість нулів?


Відповіді:


172

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

Дивіться Formatterдокументи щодо інших модифікаторів.


211
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отримання додаткової інформації.


13

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

Використовуйте StringUtilsклас apache commons-lang :

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

Як StringUtils.leftPad()швидше, ніжString.format()


StringUtils.leftPad - це ще один хороший вибір, і можна стверджувати, що він є більш читабельним, плюс дозволяє проводити майданчик з іншими символами. У мене був Google, але я не можу знайти нічого, що підтверджує, що це швидше - ви могли б надати якісь докази для цього?
Моя голова болить

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.