ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MessageFormat
    개발하면서/etc 2009.11.03 23:42

    필요는 사람을 집중하게 만든다.

    C에서 sprintf기능을 하는게 Java에 있는지 알아보던중, MessageFormat이라는것을 알게되었다.

    Java에서는 String의 개념이 있어서 '+'연산으로 다 가능해 그다지 쓸모는 없지만.....;; 그래도 알면 좋다는 신념아래

    알아보기로 했다.


    //C의 sprintf는
    char form[50] = "age : %d, area : %s\n";
    char output[200];
    sprintf(output, form, 26, "오산");
    printf("output : %s\n", output);
    
    //뭐 이런식인데 Java의 MessageFormat은 String form = "age: {0}, area: {1}"; System.out.println(MessageFormat.format(form, new Object[]{age, area}));

     

    다음과 같이 사용할수 있다.

    import java.text.MessageFormat;
    import java.util.Date;
    import java.io.*;
    
    public class Test{ // private static final String patternSimplifiedData = "내이름은 {0} 이고 나이는 {1}이다. 사는곳은 {2}이며 {3}를 꿈꾸고 있다."; // public static void main(String[] args) // { // String area = "오산"; // System.out.println(MessageFormat.format(patternSimplifiedData, // new Object[] { "강한구", "19", area, "간지나는 개발자"})); // } public static void main(String[] args) { Object[] arguments = { new Integer(7), new Date(System.currentTimeMillis()), "a disturbance in the Force" };
    String result = MessageFormat.format( "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.", arguments); System.out.println("result :" + result);
    } }

    출력 :


    더 많은 예제는 아래에 있다.

    출처 : http://java.sun.com/j2se/1.4.2/docs/api/java/text/MessageFormat.html

    TAG

    댓글 6

    • BAGE 2010.01.23 01:54 신고

      자바의 +연산으로 문자열을 생성할 경우, 각 클래스에 정의된 toString()이 묵시적으로 호출됩니다. 따라서 원하는 형태로 표시가 불가능하죠. 예를 들면 int 값을 10.00 처럼 표기할 수 없겠죠.

      C의 sprintf와 대응되는 것은 자바의 String.format()입니다.
      그리고 MessageFormat은 다국어 지원하면서 날짜포맷등을 표시할 때라면 모를까, 일반적으로는 그닥 필요없을 꺼 같군요.
      String.format("%,d", 10000); 이런것도 유용합니다.

      • 오산돌구 2010.01.28 09:09 신고

        그렇죠 자바에는 +연산이 있으니 굳이 제가 예제로 한대로 할필요가 없어보여요
        알려주신 방법은 요긴하게 쓰겠는데요? ㅎㅎ

    • 백비 2010.02.25 12:41

      너가 자바 좀 한다는 오산 돌구냐?

    • 네오네이치 2012.04.26 18:52

      오산 돌구가 작가인 디비매니저 보다가 MessageFormat.format 뭔가 하고 찾는데 구글랭킹 현재 2등입니다 ㅋㅋㅋ

Designed by Tistory.