Java

[JAVA] String.format() - 문자열 형식 지정

nineDeveloper 2020. 8. 23.
728x90

String.format() - 문자열 형식 지정

Java 5 이상 부터 사용가능
String.format() 메소드를 사용하면 C 언어의 printf 함수처럼 서식 문자열을 사용한 형식 문자열을 만들 수 있다

Java API Doc

format에 지정할 수 있는 주요 서식 ( %문자와 조합하여 사용 )

서식 분류 설명
b 또는 B 참 거짓 boolean 값 지정
h 또는 H 16진수 16진수를 지정
s 또는 S 문자열 문자열을 지정
c 또는 C 문자 문자를 지정
d 정수 10진 정수로 표시
o 정수 8진 정수로 표시
x 또는 X 정수 16진 정수 표시
e 또는 E 부동 소수점 부동 소수점 10진수로 표시 (가수와 지수로 표현)
f 부동 소수점 부동 소수점 10진수로 표시
g 또는 G 부동 소수점 부동 소수점 10진수로 표시 (반올림 되어 표시)
a 또는 A 부동 소수점 부동 소수점 16진수로 표시 (가수와 지수로 표현)
t 또는 T 날짜, 시간 날짜와 시간 서식문자 앞에 지정 ( %tH, %tM, %tS ...)
B 날짜 국가 고유 월의 완전한 이름 ( January 등 )
A 날짜 국가 고유 요일의 완전한 이름 ( Sunday 등 )
Y 날짜 년 (4자리)
y 날짜 년 (2자리)
j 날짜 Day of year ( 001 - 366 )
m 날짜 월 ( 01 - 13 )
d 날짜 일 ( 01 - 31)
e 날짜 일 ( 1 - 31)
H 시간 시, 24시간제 ( 00 - 23 )
I 시간 시, 12시간제 ( 01 - 12 )
k 시간 시, 24시간제 ( 0 - 23 )
l 시간 시, 12시간제 ( 1 - 12 )
M 시간
S 시간
% 퍼센트 퍼센트를 표시
n 개행 개행문자를 표시

아규먼트 인덱스(argument index)

  • 아라비아 숫자 와$ 문자로 구성 ( 첫번째 인수는 1$, 2번째 인수는 2$와 같이 )
    • ex) String.format("%2$d년 %3$d월 %1$일",1, 1919,3); // =?> 1919년 3월 1일 출력
  • '<' 사용하면 직전의 인수를 지정할 수 있다
import java.util.Date;

public class StringFormatSample {

    public static void main(String[] args) {

        String str = "freelife";
        boolean bol = true;
        int i = 127;
        Date now = new Date();


        String result1 = String.format("문자열 서식: %s, %S", str, str);
        System.out.println(result1); // 문자열 서식: freelife, FREELIFE

        String result2 = String.format("boolean 서식 문자열: %B, %b", bol, bol);
        System.out.println(result2); // boolean 서식 문자열: TRUE, true

        String result3 = String.format("정수 서식: %d, %o, %x, %05d", i, i, i, i); 
        System.out.println(result3); // 정수 서식: 127, 177, 7f, 00127
                                     // 4번째는 5자릿수로 0을 채움

        // 부동 소수점, %1$ 등으로 절대 인수 인덱스를 지정
        String result4 = String.format("부동 소수점 서식: %4$e, %3$f, %2$g, %1$a", 127.01, 127.02, 127.03, 127.04);
        System.out.println(result4); // 부동 소수점 서식: 1.270400e+02, 127.030000, 127.020, 0x1.fc0a3d70a3d71p6

        // 날짜, $< 로 상대 인덱스를 지정하고 직전의 인수와 같은 것을 이요
        String result5 = String.format("날짜,시간 서식: %tY년 %<tm월 %<td일 %<tH시 %<tM분 %<tS초", now);
        System.out.println(result5); // 날짜,시간 서식: 2020년 08월 23일 14시 55분 55초

    }
}
문자열 서식: freelife, FREELIFE
boolean 서식 문자열: TRUE, true
정수 서식: 127, 177, 7f, 00127
부동 소수점 서식: 1.270400ㄷ+02, 127.030000, 127.020, 0x1.fc0a3d70a3d71p6
날짜,시간 서식: 2020년 08월 23일 14시 55분 55초
728x90

댓글

💲 추천 글