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

kai6666·2022년 5월 27일
1

TIL. Java

목록 보기
16/21

💁‍♀️ String.format()

String Format

  • String은 static 메서드인 format()을 통해 지정 형식의 문자열을 리턴할 수 있다.
  • 포맷 지정 서식(format specifier)를 통해 어디에 어떻게 문자열 형식을 지정할지 설정할 수 있다.

👉 포맷 지정 서식

(공식 문서의 내용을 표에 복사한 이미지입니다.)

  • 포맷 변환
  • Time 포매팅
  • Date 포매팅
  • Date/Time 포매팅

🤔 플래그

%와 컨버터 사이에는 플래그와 숫자가 올 수 있다.

  • 숫자: 자리수을 정해준다. 인수로 들어온 값이 자리수를 넘어가면 빈칸없이 그대로 출력된다.
  • 플래그: -, +, 0 등이 올 수 있다.
    - -: 왼쪽 정렬
    - +: 양의 숫자에 대해서도 부호를 포함해 출력
    - ``0: 숫자 앞에 빈칸이 아닌 0으로 출력 (자리수를 채워야 하는 경우) - ,```: 숫자의 세 자리마다 쉼표를 찍어서 출력

✨ 예제 코드

public class StringFormatPractice {
    public static void main(String[] args) {
        //숫자, 문자 변환

        //%a
        System.out.println(String.format("%a", 99.9)); // 0x1.8f9999999999ap6

        //%b
        boolean boo = true;
        System.out.println(String.format("%B, %b", boo, boo)); // TRUE, true

        //%c
        char c = 'm';
        System.out.println(String.format("%C, %c", c, c)); // M, m
        System.out.println(String.format("50 %c", 50)); // 50 2
        System.out.println(String.format("44032 %c", 44032)); // 44032 가

        //%d
        int i = 55;
        System.out.println(String.format("%d", i)); // 55
        System.out.println(String.format("%,d", 55555)); // 55,555

        //%e
        System.out.println(String.format("%e", 99.9)); // 9.990000e+01

        //%f
        double d = 987.6543;
        System.out.println(String.format("%f", d)); // 987.654300
        System.out.println(String.format("%f_", d)); // 987.654300_
        System.out.println(String.format("%10f_", d)); // 987.654300_
        System.out.println(String.format("%015f_", d)); // 00000987.654300_ (글자수 15, 앞부분을 빈칸이 아닌 0으로 채우라는 의미)
        System.out.println(String.format("%.2f_", d)); // 987.65_ (소수점 아래 2자리 나타내라는 의미)
        System.out.println(String.format("%-10f_", d)); // 987.654300_ (기본적으로 오른쪽 정렬이나 '-' 붙이면 왼쪽 정렬)

        //%g
        System.out.println(String.format("%f", 99.9)); // 99.900000

        //%h
        System.out.println(String.format("%f", 99.9));

        //%o
        System.out.println(String.format("%f", 12345.6789)); // 12345.678900

        //%s
        String s = "strawberry";
        System.out.println(String.format("%s", s)); // strawberry
        System.out.println(String.format("%20s", s)); //           strawberry
        System.out.println(String.format("%-20s", s)); // strawberry          (/구분)
        System.out.println(String.format("%10.2s", s)); //         st (2만큼 스트링을 자른 후 10만큼 공백을 채워 문자열 길이를 만든다.)

        //%t
        // y: 연 (year)
        // M: 월 (month)
        // d: 일 (day of month)
        // H: 시 (24-hour)
        // h: 시 (12-hour)
        // M: 분 (minute)
        // s: 초 (second)
        Calendar cal = Calendar.getInstance();
        Date date = new Date();
        System.out.format("%tB %te, %tY%n", cal, cal, cal); // 5월 26, 2022
        System.out.format("%tF%n", date); // 2022-05-26
        System.out.format("%tR%n", date); // 22:20


    }
}

참고자료
공식문서 String
공식문서 Formatter

profile
성장 아카이브

0개의 댓글