[java] Java 문자열 형식을 사용하여 정수 형식화

Java에서 String.format 메소드를 사용하여 0 앞에 정수를 줄 수 있는지 궁금합니다.

예를 들면 다음과 같습니다.

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 개의 빈 공간이 있습니다. 대신 숫자 앞에 0을 붙일 수 있습니까?



답변

%03d정수의 형식 지정자에서 사용하십시오 . 이는 0숫자가 3 자리 미만인 경우 숫자가 0으로 채워짐을 의미합니다.

Formatter다른 수정 자에 대해서는 문서를 참조하십시오 .


답변

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은 참조하십시오.


답변

apache commons-lang이라는 타사 라이브러리를 사용하는 경우 다음 솔루션이 유용 할 수 있습니다.

StringUtils아파치 commons-lang 클래스 사용 :

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

으로는 StringUtils.leftPad()보다 빠른입니다String.format()


답변