티스토리 뷰

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);
내가 제일 좋아하는 과일은 '수박' 이다.

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크