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

꾸준히·2023년 2월 6일
0
post-thumbnail

String.format() : 문자열에 변수를 넣거나, 특정 형식으로 만들 수 있는 기능을 제공해준다.

📌공식 문서

Java Docs : https://docs.oracle.com/javase/8/docs/api/

Method Summray를 참고하면 format메서드는 두가지이다.

  1. parameter : Locale, String
  2. parameter : String

📌String

문자열 파라메터에는 포맷팅이 사용된 문자열을 넣을 수 있다. 해당 포맷은 뒤에 넘어 오는 추가 파라메터들을 인식하는데 사용된다. java.util.Formatter 클래스의 형식을 따른다.(참고: https://docs.oracle.com/javase/8/docs/api/)

포맷은 문자, 숫자, 날짜, 시간 등 다양한 데이터를 받아서 포맷팅 시킬 수 있다. 하지만 이 글에서는 문자와 숫자 데이터만 다루도록 한다.

위 포맷은 docs에서 제공하는 포맷의 양식이다. optional로 표현된 것은 선택사항이고, required는 필수로 꼭 들어가야 하는 사항이다.

  • conversion : 포맷의 필수 값이다. 매칭되는 argument의 타입에 따라 적절한 값을 입력하여 매핑시킨다.
    
    String strS = String.format("내 이름은 %s야", "느루");
    System.out.println(strS);
    // 내 이름은 느루야
    String str = String.format("pay : %f", 12.123f);
    System.out.println(str);
    // pay : 12.123000
    String str1 = String.format("pay : %f%%", 12.123f);
    System.out.println(str1);
    // pay : 12.123000%
  • [argument_index$] : index 의 말 그대로 숫자 값이 온다. argument list에서 몇번째 argument 인지 나타낸다.

  • [flags] : 아웃풋을 수정하는데 사용된다. 아래 표의 y는 사용 가능이라는 뜻

  • [width] : 최소 갯수(?) - 영어 해석을 잘 못하겠지만, flags를 반복하는 횟수인 것 같다.

    
    String strPadding = String.format("%04d", 1, 1);
    System.out.println(strPadding);
    // 0001
    
     // 
     String strRightPad = String.format("aa%-2daa", 1, 1);
     System.out.println(strRightPad);
    // aa1 aa
    
  • [.precision] : 최대 갯수

📌locale

formatted된 String에 파라메터를 바인딩 시켜 문자열을 만들어 두는 것은 동일하지만 하나는 locale(나라 or 지역을 나타냄)을 추가로 넣어줘서 해당 지역에서 통용되는 문자열로 변환시킬 수 있다.

String strKR = String.format(Locale.KOREA, "pay : %f", 12.123f);
System.out.println(strKR);

String strFR = String.format(Locale.FRANCE,"pay : %f", 12.123f);
System.out.println(strFR);

0개의 댓글