※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다.
개요
Java에는 String.format이라는 메소드가 있다. 이 메소드는 인수에 지정한 문자열(서식)을 원래 규칙에 따른 문자열을 반환하는 메서드이다.
설명만으로는 제대로 이해하기 힘들 수 있다고 생각하므로, 바로 코드를 살펴보자.
int hoge = 1;
String str = String.format("변수hoge의 내용은%d이다.", hoge);
System.out.println(str);
실행시키면 다음과 같다.
변수hoge의 내용은1이다.
String.format의 첫 번째 인수는 정해진 룰(서식)에 따라 쓸 필요가 있다. 그리고 두 번째 인수 이후는 첫 번째 인수에서 정한 서식에 할당하기 위한 변수를 순서에 맞게 전달해나간다.
서식, 서식이라고 이야기하고 있지만 "%~"이라고 쓴 부분을 일컫는다. 이 부분을 두 번째 인수이후에 지정한 값으로 바꿔주는 것이 String.format이다.
숫자를 다룰 경우는 첫 번째 인수의 문자열 안에 "%d"라고 쓴다. 그럼 문자열이나 참거짓, 소수등을 다룰 때는 어떻게 하면 좋을지에 대해 지금부터 설명하도록 하겠다.
여러가지 데이터형 다루기
참거짓 값(%b)
참거짓(true 혹은 false)를 다루고 싶은 경우는 "%b"를 사용한다.
String str = String.format("TRUE는%b、FALSE는%b", true, false);
TRUE는true、FALSE는false
문자열 값(%s)
문자열(여러 개의 문자 모음)을 다루고 싶은 경우는 "%s"를 사용하자.
String str = String.format("문자열의 내용은%s", "HOGE");
문자열의 내용은 HOGE
문자 값(%c)
방금은 문자열의 예이지만 이번에는 문자를 다루고 싶을 때의 예이다. 이와관련해서 문자는 문자열과 다르다. 문자열은 여러개의 문자의 모음을 의미하고 문자는 한 개의 문자(엄밀하게 말하자면 1바이트)이다.
이러한 문자를 다룰 때는 "%c"를 사용하자.
String str = String.format("귀하의 평가는%c", 'A');
귀하의 평가는A
부동소수점 값(%f)
부동 소수점을 다루고 싶은 경우 "%f'를 사용하면 표현할 수 있다.
String str = String.format("원주율은 %f", 3.1415);
원주율은 3.141500
날짜 값(%tXX)
날짜를 다루고 싶은 경우는 연, 월, 일 등을 지정한다는 점에서 지금까지의 것들과 다르다. 종류가 많으므로 다음과 같이 표로 표시했다.
파라미터명 | 내용 |
H | 시간(00~23) |
I | 시간(01~12) |
k | 시간(0~23) |
l | 시간(1~12) |
M | 분(00~59) |
S | 초(00~60) |
L | 밀리초(000~999) |
N | 나노초(000000000~999999999) |
p | am 혹은 pm 표시 |
s | 1970년 1월 1일부터의 초 |
Q | 1970년 1월 1일부터의 밀리초 |
B | January나February등의 월 영어 표기 |
b | 위의 생략형 |
a | 요일의 영어 표기 |
C | 4행의 연도를 100으로 나눈 숫자(00~99) |
Y | 연 |
y | 두 글자 연도 |
j | 연의 몇 번째 날인가 |
m | 월(01~13) |
d | 월의 몇 번째 날인가(01~31) |
e | 월의 몇 번째 날인가(1~31) |
Date date = new Date();
String date_str = String.format("%tH:%tM", date.getTime(), date.getTime());
System.out.println(date_str);
숫자를 가공하여 출력
콤마로 구분
은행처럼 숫자마다 콤마로 나누고 싶은 경우에는 다음과 같이 쓰면 된다.
String str = String.format("%,d", 123456789);
123,456,789
8진수로 표시
8진수로 표시하고 싶은 경우 "%o"를 사용한다.
String str = String.format("8진수로 표시하면%o", 10);
8진수로 표시하면12
16진수로 표시
16진수의 경우 "%x"를 사용하면 된다.
String str = String.format("16진수로 표시하면%x", 10);
16진수로 표시하면a
숫자의 맨 앞에 무언가로 채우고 싶은 경우
0으로 채우고 싶은 경우
00001과 같이 앞 부분은 0으로 채우고 싶은 경우 다음과 같이 하면 된다.
String str = String.format("%05d", 1);
00001
0뒤에는 자리 수를 입력하면 된다. 따라서 위 코드에서는 입력하는 숫자가 다섯 자리 수치인 경우는 0이 없어진다.
앞 부분을 공백으로 채우고 싶은 경우
String str = String.format("%5d", 10);
10
뒷 부분을 공백으로 채우고 싶은 경우
String str = String.format("%-5d", 10);
10
참고자료
'IT > 언어' 카테고리의 다른 글
[Junit] static 메소드의 Mock화 (0) | 2023.07.11 |
---|---|
[Junit] private 메소드 테스트하는 방법 (0) | 2023.05.31 |
[Java] 자주 사용되는 Lombok 어노테이션 (0) | 2023.05.15 |
[Java] 생성자(Constructor)의 기본과 사용법 (2) | 2023.05.13 |
[Vue3] 이제는 Vuex나 Pinia를 사용하지 않아도 되지 않을까? (Composition API) (0) | 2023.05.06 |