Добавить ведущие нули в строку

Я хочу добавить некоторые ведущие нули в строку, общая длина должна быть восемь символов. Например:

123 должно быть 00000123
1243 должно быть 00001234
123456 должно быть 00123456
12345678 должно быть 12345678

Какой самый простой способ?

Ответ 1

Сырой маленький трюк

String str = "123";
String formatted = ("00000000" + str).substring(str.length())

Если вы начали с номера вместо:

Int number = 123;
String formatted = String.format("%08d", number);

Ответ 2

Используйте String.format(), у него уже есть спецификатор:

String.format("%08d", myInteger);

В более общем плане, см. javadoc для Formatter. У этого есть много аккуратного материала - больше, чем вы можете видеть на первый взгляд.

Ответ 3

Использование apache common langs lib:

StringUtils.leftPad(str, 8, '0');

Ответ 4

Почему бы не создать простую функцию заполнения? Я знаю, что есть библиотеки, но это очень простая задача.

System.out.println(padStr(123, "0", 8));
System.out.println(padStr(1234, "0", 8));
System.out.println(padStr(123456, "0", 8));
System.out.println(padStr(12345678, "0", 8));       

public String padStr(int val, String pad, int len) {
  String str = Integer.toString(val);
  while (str.length() < len)
    str = pad + str;
  return str;
}

Ответ 5

Использование DecimalFormat:

static public void main(String[] args) {
    int vals[] = {123, 1243, 123456, 12345678};
    DecimalFormat decimalFormat = new DecimalFormat("00000000");
    for (int val : vals) {
        System.out.println(decimalFormat.format(val));
    }
}

Вывод:

00000123
00001243
00123456
12345678

Ответ 6

public static void main(String[] args)
{
    String stringForTest = "123";
    int requiredLengthAfterPadding = 8;
    int inputStringLengh = stringForTest.length();
    int diff = requiredLengthAfterPadding - inputStringLengh;
    if (inputStringLengh < requiredLengthAfterPadding)
    {
        stringForTest = new String(new char[diff]).replace("\0", "0")+ stringForTest;
    }
    System.out.println(stringForTest);
}