String.format()
: 문자열에 변수를 넣거나, 특정 형식으로 만들 수 있는 기능을 제공해준다.
Java Docs : https://docs.oracle.com/javase/8/docs/api/
Method Summray를 참고하면 format메서드는 두가지이다.
- parameter : Locale, String
- parameter : String
문자열 파라메터에는 포맷팅이 사용된 문자열을 넣을 수 있다. 해당 포맷은 뒤에 넘어 오는 추가 파라메터들을 인식하는데 사용된다. java.util.Formatter
클래스의 형식을 따른다.(참고: https://docs.oracle.com/javase/8/docs/api/)
포맷은 문자, 숫자, 날짜, 시간 등 다양한 데이터를 받아서 포맷팅 시킬 수 있다. 하지만 이 글에서는 문자와 숫자 데이터만 다루도록 한다.
위 포맷은 docs에서 제공하는 포맷의 양식이다. optional로 표현된 것은 선택사항이고, required는 필수로 꼭 들어가야 하는 사항이다.
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
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);