[Java]String Format 사용법

Hyo·2021년 1월 17일
1

java

목록 보기
1/2
post-thumbnail

블로그 이전

https://kdhyo98.tistory.com/27

Stirng Format

문자열의 형식을 원하는대로 표현해주는 메소드로 유용하게 사용되고 있다.

표현가능한 데이터 타입

모든 인수 적용 가능(ex - stirng, int, Integer, Boolean ...)

  • %b (인수가 null이면 false 아니면 true 반환 / Boolean)
  • %h (인수가 null이면 null 아니면 16진수 반환 / Integer.toHexString)
  • %s (인수가 null이면 null 아니면 문자열 반환 / toString())

숫자 (char, Character, byte, Byte, short, Short, int, Integer)

  • %c (char, byte, short ... 을 받아 유니코드로 반환)

정수 (byte, Byte, short, Short, int, Integer, long, Long, BigInteger)

  • %d (10진수 정수 반환)
  • %o (8진수 정수 반환)
  • %x (16진수 정수 반환)

실수 (float, Float, double, Double, BigDecimal)

  • %e (컴퓨터 과학 표기법으로 10진수로 형식화)
  • %f (10진수 실수 반환)
  • %g (반올림 후 정밀도와 값에 따라 컴퓨터화 된 과학적 표기법 또는 10진수 실수로 반환)
  • %a (유효 숫자와 지수가 있는 16진수 부동 소수점 숫자로 형식화)

날짜 시간

  • %t (날짜 및 시간)

백분율

  • % (퍼센트 리터럴)

개행

  • n (줄 구분 기호 반환)

결과는 모두 String으로 반환이 됩니다.

날짜 / 시간 변환

시간
H - 00 ~ 23 (필요에 따라 앞에 0을 포함한 24시간 표시)
I - 01 ~ 12 (필요에 따라 앞에 0을 포함한 12시간 표시)
k - 24시간 시계의 시간 0 ~ 23
l - 12시간 시계의 시간 1 ~ 12
M - 00 ~ 59 (필요에 따라 앞에 0을 포함한 분)
S - 00 ~ 60 (필요에 따라 앞에 0을 포함한 초)
L - 000 ~ 999 (필요에 따라 앞에 0을 포함한 3자리 밀리 초)
N - 000000000 ~ 999999999 (필요에 따라 앞에 0을 포함한 9자리 나노초)
p - am or pm
z - ex) -0800 (GMT에서 RFC 822 스타일 숫자 시간대 오프셋)
Z - 시간대의 약자를 표시하는 문자열
s - 초는 시대의 시작 1월 1일 1970년 시작 이후 00:00:00 UTC
Q - 밀리 초는 시대의 시작 1월 1일 1970년 시작 이후 00:00:00 UTC

날짜
B - January, February (전체 월 이름)
b - Jan, Feb (약자 월 이름)
h - b와 동일
A - Sunday, Monday (전체 요일 이름)
a - Sun, Mon (약자 요일 이름)
C - 00 ~ 99 (4자리 연도를 나누어 필요에 따라 앞에 0이 있는 2자리 형식)
Y - 2021 (연도 4자리)
y - 21 (연도 2자리)
j - 001 ~ 366 (날짜 Day of Year)
m - 01 ~ 13 (월)
d - 01 ~ 31 (일 필요에 따라 앞에 0표시)
e - 1 ~ 31 (일)

문법형식

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

필수 값 - %, conversion
옵션 값 - argument_index$, flags, width

argument_index$

  • 아라비아 숫자와 $ 문자를 결합하여 사용 ex) 1$ 2$ 3$
  • 앞에 숫자에 따라 몇 번째 인수를 받을 지 지정가능
  • ex) String.format("%3$ - %2$ - %1$", "세번째", "두번째", "첫번째");
  • '<'를 사용하면 직전의 인수를 사용할 수 있음

flags

'-'를 사용하면 왼쪽으로 정렬 빼면 오른쪽으로 정렬
',' 를 사용하면 콤마가 포함된 숫자

width

문자열의 길이를 지정

conversion

위에서 설명한 데이터타입들을 사용

예제

Stirng a = "첫번째";
String b = "두번째";
int c = 30000;
LocalDateTime now = LocalDate.now();
String.format("%s-%s", a, b); // 첫번째-두번째
String.format("%,d", c); // 30,000
String.format("%B - %b", a, b); // True, true
String.format("%tY년 %<tm월 %<td일 %<tH시 %<tM분 %<tS초", now); // 2021년 01월 17일 22시 19분 47초
profile
생각중..🤔🤔🤔

0개의 댓글