본문 바로가기
Java

Java String format 사용법

by RyanGomdoriPooh 2019. 8. 27.

String format 문법 형식

%[argument_index$][flags][width]conversion

문법 설명

1) 필수값: %와 conversion 으로 무조건 있어야합니다.
"conversion": 표현 할 데이터의 타입으로, s(문자열), d(정수), x(16진수), o(8진수), f(실수) ex) %s, %d, %x, %o, %f
ex) System.out.println(String.format("%s, %s", "KOREA", "JAPAN"));
2) 옵션값: [argument_index$][flags][width] 는 생략 가능합니다.

생략 가능한 옵션

  1. [argument_index] 옵션
  2. [flags] 옵션
  3. [width] 옵션

[argument_index] 옵션

들어갈 파라미터의 인덱스이다. 1부터 시작한다.
아래를 보면 2$와 1$를 각 각 추가했는데 2$는 두번 째 문자열인 "JAPAN"을 의미하고,
1$는 첫 번째 "KOREA"를 의미하기 때문에 출력 순서가 바뀐 것입니다.

// 길이를 10으로 지정 (width +  argument_index 옵션)
System.out.println(String.format("%2$10s%1$10s", "KOREA", "JAPAN"));
     JAPAN     KOREA

[flags] 옵션

[flags]는 [argument_index]와 [width]사이에 위치합니다.
'-' flag를 사용하면 출력되는 문자열이 왼쪽으로 정렬 됩니다.
'-' flag를 빼면 이전 예제와 같이 오른쪽으로 정렬됩니다.

System.out.println(String.format("%-10s%-10s", "KOREA", "JAPAN"));
KOREA     JAPAN     

System.out.println(String.format("%10s%10s", "KOREA", "JAPAN"));
     KOREA     JAPAN

[width] 옵션

conversion앞에 위치하는 [width]를 사용한 샘플입니다.

// 길이를 10으로 지정 (width 옵션)
System.out.println(String.format("%10s%10s", "KOREA", "JAPAN"));
     KOREA     JAPAN

 


필수 값 : conversion

  1. %d : 10진수(정수)
  2. %x : 16진수
  3. %o : 8진수
  4. %f : 실수

1. %d : 10진수(정수)

// 정수는 %뒤에 d를 붙여서 사용합니다.
System.out.println(String.format("%d, %d", 12345, 67890));
12345, 67890
System.out.println(String.format("%10d%10d", 12345, 67890));
     12345     67890
System.out.println(String.format("%2$10d%1$10d", 12345, 67890));
     67890     12345
System.out.println(String.format("%-10d%-10d", 12345, 67890));
12345     67890     

// 이번엔 0 flag를 사용해서 공백 부분은 0으로 채우겠습니다.
// 0 flag는 정수나 실수를 대입할때만 사용가능하며 문자열 등에는 사용할 수 없습니다.
System.out.println(String.format("%010d%010d", 12345, 67890));
00000123450000067890

//정수, 실수에 사용 가능한 몇가지 flag를 더 사용해 보겠습니다. + flag를 사용한 샘플입니다.
//부호를 표시하면서 남는 자리수는 0으로 채우는 샘플입니다.
System.out.println(String.format("%+10d%+10d", 100, -200));
      +100      -200

// '(' 를 사용하면 음수인 경우만 괄호가 사용됩니다.
System.out.println(String.format("%(10d%(10d", 100, -200));
       100     (200)

// ',' flag를 사용한 샘플입니다.
// ','를 사용하면 해당 국가에서 사용되는 기호로 숫자를 그룹지어 줍니다. 대부분 콤마가 사용될 것 같네요.
System.out.println(String.format("%,10d%,10d", 10000, -20000));
10,000 -20,000

2. %x : 16진수

// x를 사용하면 16진수를 출력합니다.
// 아래 샘플에서는 10진수 2047이 16진수로 변환되서 출력 됩니다.
System.out.println(String.format("%10x%10x", 2047, 2047));
       7ff       7ff

// X를 대문자로 사용하면 16진수도 대문자로 출력됩니다.
System.out.println(String.format("%10X%10X", 2047, 2047));
       7FF       7FF

3. %o : 8진수

// o를 사용하면 8진수를 출력합니다. 아래 샘플에서는 10진수 2047이 8진수로 변환되서 출력 됩니다.
System.out.println(String.format("%10o%10o", 2047, 2047));
      3777      3777

4. %f : 실수

// 실수는 f를 사용합니다.
// 사용법은 정수와 거의 같고 .을 사용하면 정밀도를 지정 할 수 있습니다.
// 아래 샘플에서는 정밀도를 소숫점 두 자리까지 지정 했는데 .99가 아니라 .00으로 출력되는 이유는 반올림 되었기 때문입니다.
System.out.println(String.format("%10.2f%10.2f", 100000.999f, 200000.999f));
100001.00 200001.00

댓글0