Как я могу дополнить целое число нулями слева? - PullRequest
923 голосов
/ 23 января 2009

Как вы оставили pad int с нулями при конвертации в String в java?

Я в основном собираюсь добавить целые числа до 9999 с ведущими нулями (например, 1 = 0001).

Ответы [ 14 ]

0 голосов
/ 08 ноября 2017

Вам необходимо использовать форматтер, следующий код использует NumberFormat

    int inputNo = 1;
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumIntegerDigits(4);
    nf.setMinimumIntegerDigits(4);
    nf.setGroupingUsed(false);

    System.out.println("Formatted Integer : " + nf.format(inputNo));

Выход: 0001

0 голосов
/ 09 мая 2017

Пакеты не нужны:

String paddedString = i < 100 ? i < 10 ? "00" + i : "0" + i : "" + i;

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

0 голосов
/ 24 июля 2014

Проверьте мой код, который будет работать для целых чисел и строк.

Предположим, что наше первое число равно 2. И мы хотим добавить к этому нули, чтобы длина конечной строки была равна 4. Для этого вы можете использовать следующий код

    int number=2;
    int requiredLengthAfterPadding=4;
    String resultString=Integer.toString(number);
    int inputStringLengh=resultString.length();
    int diff=requiredLengthAfterPadding-inputStringLengh;
    if(inputStringLengh<requiredLengthAfterPadding)
    {
        resultString=new String(new char[diff]).replace("\0", "0")+number;
    }        
    System.out.println(resultString);
0 голосов
/ 05 октября 2011
public static String zeroPad(long number, int width) {
   long wrapAt = (long)Math.pow(10, width);
   return String.valueOf(number % wrapAt + wrapAt).substring(1);
}

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

...