[java] 선행 0으로 Java 문자열을 형식화하는 방법은 무엇입니까?

예를 들어 문자열은 다음과 같습니다.

"Apple"

8 문자를 채우기 위해 0을 추가하고 싶습니다.

"000Apple"

어떻게해야합니까?



답변

도서관의 도움없이해야 할 경우 :

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

(문자열이 8자를 넘지 않는 한 작동합니다.)


답변

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);
    }
}


답변

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

이것은 commons-lang에서 온 것 입니다. javadoc 참조


답변

이것이 그가 정말로 요구 한 것입니다.

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

산출:

000Apple


답변

다른 답변에 사용 된 String.format 메소드를 사용하여 0의 문자열을 생성 할 수 있습니다.

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

형식 문자열에서 선행 0의 수를 동적으로 조정하여 문제에 적용 할 수 있습니다.

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);
}

여전히 지저분한 솔루션이지만 정수 인수를 사용하여 결과 문자열의 총 길이를 지정할 수 있다는 장점이 있습니다.


답변

구아바의 Strings유틸리티 클래스 사용하기 :

Strings.padStart("Apple", 8, '0');


답변

이것을 사용할 수 있습니다 :

org.apache.commons.lang.StringUtils.leftPad("Apple", 8, "0")