Java
MessageFormat with Java
§무명소졸§
2020. 5. 26. 15:35
자바에서 문자열 작업을 할때 사용할 수 있는 MessageFormat이라는 클래스가 있다. 특히 Template 문서에 동적으로 특정한 값들을 삽입할 때 이용하면 가독성을 높일 수 있다. 그리고 날짜나 숫자 형식을 제공하기 때문에 유용하다. 그럼 몇 가지 예제로 사용법을 알아 보겠다.
1. 가변인자를 이용한 문자열 삽입
String text = MessageFormat.format("My name is {0}", "무명소졸");
System.out.println(text);
//OUTPUT
//My name is 무명소졸
간단한 문자열에서는 오히려 불필요한 클래스 사용지 복잡해 보일지 모르겠다. 하지만 아래처럼 연결할 동적 문자열이 많을 경우 MesageFormat을 사용하면 코드 가독성을 높일 수 있다.
String name ="무명소졸";
String sex = "남자";
String age = "39";
String text1 = "나의 이름은 "+name+" 입니다. 성별은 "+sex+"이고 나이는 "+age+"입니다.";
System.out.println(text1);
String text2 = MessageFormat.format("나의 이름은 {0} 입니다. 성별은 {1}이고 나이는 {2}입니다."
, name, sex, age);
System.out.println(text2);
2. 객체배열를 이용한 문자열 삽입
가변 인수가 아닌 Object 배열 형태로 바인딩 될 값들을 전달 할 수 있다.
Object[] objects = new Object[]{"빨강", "초록", "파랑"};
String colors = MessageFormat.format("빛의 삼원색은 {0}, {1}, {2} 이다.", objects);
System.out.println(colors);
//빛의 삼원색은 빨강, 초록, 파랑 이다.
3. 타입 지원
MessageFormat 은 몇가지 내장 타입을 지원하는데 아래는 시간과 통화 표시에 대한 예제이다.
String printDate = MessageFormat.format("오늘 날짜는 {0, date} 입니다.", new Date());
String printTime = MessageFormat.format("현재 시간은 {0, time} 입니다.", new Date());
System.out.println(printDate)
System.out.println(printTime);
//오늘 날짜는 2020. 6. 15 입니다.
//현재 시간은 오후 12:33:26 입니다.
String str = MessageFormat.format("올해 성과금은 {0,number,currency} 입니다.", new Float(100_000_000));
System.out.println(str);
//올해 성과금은 ₩100,000,000 입니다.
4. Single quotes ( ' ) 의 사용
문자열 중 ' single quoties 를 사용하기 위해서는 escape 처리가 필요하다.
String text = MessageFormat.format("내가 제일 좋아하는 과일은 ''{0}'' 이다.", "수박");
System.out.println(text);
내가 제일 좋아하는 과일은 '수박' 이다.