java 에서 다양한 format 을 설정하는 Util 을 제공한다.


그중에서 String 의 format 을 살펴보도록 하자.



예시)

String str = String.format("p1 : %s , p2 : %.2f",  "one", 1.234f); // String format 으로 변경된 값을 str 변수에 바인딩

System.out.println(str);


또는


System.out.printf("p1 : %s , p2 : %.2f",  "one", 1.234f);  // 화면에 바로 출력


결과) 두개의 결과는 다음과 같이 같게 나온다.

p1 : one , p2 : 1.23

p1 : one , p2 : 1.23



원리)


이런 식으로 해당 부분에 값이 원하는 포맷형태로 변경되에 바뀌게 된다.


%s 는 스트링, %d 는 숫자, %f 는 실수 대한 변경이다.


스트링의 %s 의 대표적인 기능 및 예시는 다음과 같다.


 항목

 내용

 결과

 %s

 해당 위치의 스트링을 대체한다.

 "one" 

   ▼

 "one"

 %10s

 숫자(10)만큼 문자열 좌측(+)에 공백을 채워 문자열 길이를 만든다.(숫자보다 문자열길이가 긴경우에는 그대로 도시된다)

 "one"

   ▼  (_ 는 공백)

 "_______one"

 %-10s

 숫자(10)만큼 문자열 우측(-)에 공백을 채워 문자열 길이를 만든다.(숫자보다 문자열길이가 긴경우에는 그대로 도시된다)

 "one"

   ▼  (_ 는 공백)

 "one_______"

 %10.2s

 점(.)우측에 해당하는 숫자(2) 만큼 스트링을 자른 후 점(.)좌측 숫자(10)만큼 문자열 좌측에 공백을 채워 문자열 길이를 만든다.

 "one"

   ▼  (_ 는 공백)

 "________on"

 %-10.2s

 점(.)우측에 해당하는 숫자(2) 만큼 스트링을 자른 후 점(.)좌측 숫자(10)만큼 문자열 우측에 공백을 채워 문자열 길이를 만든다.

 "one"

   ▼  (_ 는 공백)

 "on________"



스트링의 %d 의 대표적인 기능 및 예시는 다음과 같다.


 항목

 내용

 결과

 %d

 해당 위치의 숫자로 대체한다.

 123

   ▼

 123

 %10d

 숫자(10)만큼 문자열 좌측(+)에 공백을 채워 숫자열(123) 길이를 만든다.(숫자보다 숫자열길이가 긴경우에는 그대로 도시된다)

 123

   ▼  (_ 는 공백)

 _______123

 %-10d

 숫자(10)만큼 문자열 우측(-)에 공백을 채워 숫자열(123) 길이를 만든다.(숫자보다 숫자열길이가 긴경우에는 그대로 도시된다)

 123

   ▼  (_ 는 공백)

 123_______

 %010d

 숫자(10)만큼 문자열 좌측(+)에 0을 채워 숫자열(123) 길이를 만든다.(숫자보다 숫자열길이가 긴경우에는 그대로 도시된다)

 123

   ▼

 0000000123

 %,d

 1000 단위로 콤마(,) 처리를 한다.

 1234567

   ▼

 1,234,567



스트링의 %f 의 대표적인 기능 및 예시는 다음과 같다.


 항목

 내용

 결과

 %f

 해당 위치의 숫자로 대체한다. 정수일 경우에는 정수만 나오며, 실수는 소숫점 6자리(기본)까지 포함한다.

 123f

   ▼

 123.000000


 123

   ▼ (정수형)

 123

 %12f

 숫자(12)만큼 문자열 좌측(+)에 공백을 채워 숫자열(123)과 소숫점이하 자리를 포함하여 길이를 만든다.(숫소숫점 이하를 포함한 길이가 설정한 숫자열길이가 긴경우에는 그대로 도시된다)

 123f

   ▼  

 __123.000000

 %-12f

 숫자(12)만큼 문자열 우측(-)에 공백을 채워 숫자열(123)과 소숫점이하 자리를 포함하여 길이를 만든다.(소숫점 이하를 포함한 길이가 설정한 숫자열길이가 긴경우에는 그대로 도시된다)

 123f

   ▼  

 123.000000__

 %.2f

 점(.)우측에 해당하는 숫자(2) 만큼 소숫점이하(.456) 자리를 반올림하여 길이를 만든다.

 123.456f

   ▼  

 123.46

 %010.2f

 숫자(10)만큼 문자열 좌측(+)에 0을 채우고 점(.)우측에 해당하는 숫자만큼 소숫점 이하의 숫자를 자른다.(자른 부분은 반올림한며, 소숫점을 자를 부분을 설정하지 않으면 소숫점의 점을 포함한 숫자만큼 0을 채워 길이를 만든다. 숫자값은 달라질 수 있다)

 123.456f

   ▼(반올림)

 0000123.46

 %,.2f

 1000 단위로  콤마(,) 처리를 하고, 점(.)우측에 해당하는 숫자(2) 만큼 소숫점이하(.456) 자리를 반올림하여 길이를 만든다.

 1234.567f

   ▼  

 1,234.57


기타 시간 %t


  항목

 내용

  결과

 %td

  java.util.Date 를 입력받으며 오늘 일자(day)를 제공

 new Date()

  ▼ (오늘 일자 day)  

 08

 %tm

 java.util.Date 를 입력받으며 이번 달(month)를 제공

 new Date()

  ▼ (이번 달 month) 

 12

 %th

 long 형 시간데이터를 입력받으며 이번 달(month)를 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터)

  ▼ (이번 달 month) 

 12월

 %ty

 java.util.Date 를 입력받으며 이번 약년(year)를 제공

 new Date()

  ▼ (이번 해 year)

 14

 %tD

 java.util.Date 를 입력받으며 오늘 날짜(월/일/약년)를 제공

 new Date()

  ▼ (오늘날짜 date 월/일/년)

 12/08/14

 %tY

 java.util.Date 를 입력받으며 오늘 년을 제공

 new Date()

  ▼ (이번 해 year)

 2014

 %tF

 java.util.Date 를 입력받으며 오늘 날짜(월/일/년)를 제공

  new Date()

  ▼ (오늘날짜 full)

 2014-12-08

 %tT

 long 형 시간데이터를 입력받으며 현재시간(시:분:초)를 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터)

  ▼ (date의 시간 or 현재시간)

 15:19:50

 %tH

 long 형 시간데이터를 입력받으며 시간(24시간 단위)을 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터)

  ▼ (date의 시간)

 15

 %tl

 long 형 시간데이터를 입력받으며 시간(12시간 단위)을 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터)

  ▼ (date의 시간 12시간단위)

 3

 %tM

 long 형 시간데이터를 입력받으며 분을 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터)

  ▼ (date의 분 Minute)

 32

 %tS

 long 형 시간데이터를 입력받으며 초를 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터)

  ▼ (date의 초)

 52

 %tL

 long 형 시간데이터를 입력받으며 밀리세컨(1000분의 1초)를 제공

 new Date().getTime()

 or System.currentTimeMillis()

 (long 형의 시간 데이터) 

  ▼ (date의 1000분의1초)

 932



string format 에서 원하는 위치의 파라미터값을 가져다 쓰기 위해서는(같은 파라미터 여러번 가능) 다음과 같다


* syntax

%숫자(1부터시작)$타입

* 예시

System.out.printf("%2$s %1$s","1","2");

System.out.println();

System.out.printf("%1$tY.%1$tm.%1$td %1$tH:%1$tM:%1$tS.%1$tL",new Date().getTime());

* 결과

2 1

2014.12.08 15:46:16.270


기타 상세한 내용은 formatter 의 api 로 확인 가능하다. 

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

'IT > java' 카테고리의 다른 글

브라우져에 파라미터 던져 도시하기  (0) 2015.04.08

+ Recent posts