Как отформатировать строку Java с нулем в начале? - PullRequest
161 голосов
/ 29 октября 2010

Вот строка, например:

"Apple"

и я хотел бы добавить ноль, чтобы заполнить 8 символов:

"000Apple"

Как я могу это сделать?

Ответы [ 20 ]

289 голосов
/ 29 октября 2010
public class LeadingZerosExample {
    public static void main(String[] args) {
       int number = 1500;

       // String format below will add leading zeros (the %0 syntax) 
       // to the number above. 
       // The length of the formatted string will be 7 characters.

       String formatted = String.format("%07d", number);

       System.out.println("Number with leading zeros: " + formatted);
    }
}
252 голосов
/ 29 октября 2010

В случае, если вам нужно сделать это без помощи библиотеки:

("00000000" + "Apple").substring("Apple".length())

(работает, пока ваша строка не длиннее 8 символов).

112 голосов
/ 29 октября 2010
 StringUtils.leftPad(yourString, 8, '0');

Это от commons-lang . См. Javadoc

24 голосов
/ 17 июля 2015

Это то, что он действительно просил, я верю:

String.format("%0"+ (8 - "Apple".length() )+"d%s",0 ,"Apple"); 

выход:

000Apple
23 голосов
/ 13 ноября 2014

Вы можете использовать метод String.format, который используется в другом ответе, для генерации строки из 0,

String.format("%0"+length+"d",0)

Это можно применить к вашей проблеме, динамически корректируя количество ведущих 0 в форматеstring:

public String leadingZeros(String s, int length) {
     if (s.length() >= length) return s;
     else return String.format("%0" + (length-s.length()) + "d%s", 0, s);
}

Это все еще грязное решение, но имеет то преимущество, что вы можете указать общую длину полученной строки, используя целочисленный аргумент.

16 голосов
/ 23 мая 2016

Использование утилиты Guava's Strings:

Strings.padStart("Apple", 8, '0');
11 голосов
/ 16 марта 2016

Вы можете использовать это:

org.apache.commons.lang.StringUtils.leftPad("Apple", 8, "0")
7 голосов
/ 20 февраля 2017

Я был в подобной ситуации, и я использовал это;Это довольно кратко, и вам не нужно иметь дело с длиной или другой библиотекой.

String str = String.format("%8s","Apple");
str = str.replace(' ','0');

Просто и аккуратно.Формат строки возвращает " Apple", поэтому после замены пробела нулями он дает желаемый результат.

6 голосов
/ 29 октября 2010
String input = "Apple";
StringBuffer buf = new StringBuffer(input);

while (buf.length() < 8) {
  buf.insert(0, '0');
}

String output = buf.toString();
4 голосов
/ 29 октября 2010

Используйте Apache Commons StringUtils.leftPad (или посмотрите код, чтобы создать свою собственную функцию).

...