Java int
로 변환 할 때 어떻게 0 String
으로 채 웠습니까?
기본적으로 정수를 9999
앞에 오는 0으로 채우려 고합니다 (예 : 1 = 0001
).
답변
다음 java.lang.String.format(String,Object...)
과 같이 사용하십시오 .
String.format("%05d", yournumber);
길이가 5 인 제로 패딩의 경우 16 진 출력의 d
경우 x
as를로 변경하십시오 "%05x"
.
전체 서식 옵션은의 일부로 설명되어 있습니다 java.util.Formatter
.
답변
다음 11
과 같이 인쇄하고 싶다고 가정 해 봅시다.011
당신은 포맷을 사용할 수 있습니다 : "%03d"
.
이 포맷터를 다음과 같이 사용할 수 있습니다.
int a = 11;
String with3digits = String.format("%03d", a);
System.out.println(with3digits);
또는 일부 Java 메소드는 이러한 포맷터를 직접 지원합니다.
System.out.printf("%03d", a);
답변
어떤 이유로 든 1.5 이전 Java를 사용하는 경우 Apache Commons Lang 방법을 사용해보십시오.
org.apache.commons.lang.StringUtils.leftPad(String str, int size, '0')
답변
이 예제를 찾았습니다 … 테스트 할 것입니다 …
import java.text.DecimalFormat;
class TestingAndQualityAssuranceDepartment
{
public static void main(String [] args)
{
int x=1;
DecimalFormat df = new DecimalFormat("00");
System.out.println(df.format(x));
}
}
이것을 테스트하고 :
String.format("%05d",number);
두 가지 모두 내 목적으로 String.Format이 더 좋고 간결하다고 생각합니다.
답변
성능이 중요한 경우 String.format
기능에 비해 오버 헤드가 적어 직접 수행 할 수 있습니다.
/**
* @param in The integer value
* @param fill The number of digits to fill
* @return The given value left padded with the given number of digits
*/
public static String lPadZero(int in, int fill){
boolean negative = false;
int value, len = 0;
if(in >= 0){
value = in;
} else {
negative = true;
value = - in;
in = - in;
len ++;
}
if(value == 0){
len = 1;
} else{
for(; value != 0; len ++){
value /= 10;
}
}
StringBuilder sb = new StringBuilder();
if(negative){
sb.append('-');
}
for(int i = fill; i > len; i--){
sb.append('0');
}
sb.append(in);
return sb.toString();
}
공연
public static void main(String[] args) {
Random rdm;
long start;
// Using own function
rdm = new Random(0);
start = System.nanoTime();
for(int i = 10000000; i != 0; i--){
lPadZero(rdm.nextInt(20000) - 10000, 4);
}
System.out.println("Own function: " + ((System.nanoTime() - start) / 1000000) + "ms");
// Using String.format
rdm = new Random(0);
start = System.nanoTime();
for(int i = 10000000; i != 0; i--){
String.format("%04d", rdm.nextInt(20000) - 10000);
}
System.out.println("String.format: " + ((System.nanoTime() - start) / 1000000) + "ms");
}
결과
자신의 기능 : 1697ms
문자열 형식 : 38134ms
답변
Google Guava 를 사용할 수 있습니다 .
메이븐 :
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<version>14.0.1</version>
</dependency>
샘플 코드 :
String paddedString1 = Strings.padStart("7", 3, '0'); //"007"
String paddedString2 = Strings.padStart("2020", 3, '0'); //"2020"
노트 :
Guava
매우 유용한 라이브러리, 그것은 또한 관련 기능을 많이 제공 Collections
, Caches
, Functional idioms
, Concurrency
, Strings
, Primitives
, Ranges
, IO
, Hashing
, EventBus
, 등
참조 : 구아바
답변
이거 한번 해봐:
import java.text.DecimalFormat;
DecimalFormat df = new DecimalFormat("0000");
String c = df.format(9); // 0009
String a = df.format(99); // 0099
String b = df.format(999); // 0999