본문 바로가기
java

Java) String.format 을 이용한 문자열 형식 설정하기

by CodeMango 2023. 2. 16.

String.format 을 이용한 문자열 형식 설정하기

 

아래 블로그 참조

 

[Java] String.format 을 이용한 문자열 형식 설정하기

public static String format(String format, Object... args); public static String format(Locale l, String format, Object... args); String 의 static 메서드인 format 메서드는 문자열의 형식을 설정하는 메서드입니다. %d (10진수 형식

blog.jiniworld.me

 

 

String 의 static 메서드인 format 메서드는 문자열의 형식을 설정하는 메서드입니다.


1. %d (= Integer Formatting)

10진수 integer의 형식을 설정할 때 이용합니다.

int i = 23;

System.out.println(String.format("%d_", i));
System.out.println(String.format("%5d_", i));
System.out.println(String.format("%-5d_", i));
System.out.println(String.format("%05d_", i));
23_
   23_
23   _
00023_

%5d 와 같이 %와 d 사이에 정수를 설정하면, 글자 길이를 설정할 수 있습니다.
기본적으로 오른쪽 정렬이고, -를 붙일 경우 왼쪽정렬입니다.(ln 4~5)
표현할 숫자인 i의 길이가 5보다 작을 경우 0을 붙입니다.(leading 0s) (ln 6)

※ %d 와 %-5d의 구분을 위해 맨 마지막에 _ 을 포함시켰습니다.

 

int i = 123456789;

System.out.println(String.format("%,d_", i));
System.out.println(String.format("%,15d_", i));
System.out.println(String.format("%,-15d_", i));
System.out.println(String.format("%,015d_", i));
123,456,789_
    123,456,789_
123,456,789    _
0000123,456,789_

% 바로 뒤에 , 를 붙이면 3자리 단위로 쉼표를 찍어줍니다.


2. %s (= String Formatting)

문자열의 형식을 설정할 때 이용합니다.

String str = "tete";

System.out.println(String.format("%s_", str));
System.out.println(String.format("%12s_", str));
System.out.println(String.format("%-12s_", str));
System.out.println(String.format("%.2s_", str));
System.out.println(String.format("%-12.2s_", str));
System.out.println(String.format("%12.2s_", str));
tete_
        tete_
tete        _
te_
te          _
          te_

%s는 문자열을 그대로 출력하고,
%s 앞에 숫자(N)를 설정할 경우, str.length()가 N보다 작을 경우 공백을 추가합니다. (ln 4~5)
- 를 붙일 경우, 왼쪽 정렬. (default는 오른쪽 정렬) (ln 5)
.숫자(N)를 설정할 경우, 최대 N길이 만큼만 출력 (ln 7~8)

 

 

실제 코드에서 살펴보겠습니다.

mvc패턴 일정관리 예제에서 사용한 format함수입니다.

 

Q. 이전년도로 이동하는 이미지를 클릭하면 이전년도로 이동하게 해라

String pp = String.format("<a href='calendar.jsp?year=%d&month=%d'>"
				+	"<img src='images/left.gif' width ='10px' height = '10px'>"
				+	"</a>", year-1, month); // 이전년도라서 year-1

format 메소드

이 코드는 String.format() 메소드를 사용하여 문자열을 구성합니다.

String.format() 메소드는 지정된 형식으로 문자열을 구성하는 데 사용됩니다.

위의 코드에서는 두 개의 정수 값을 year와 month로 전달하고 있으며, 이러한 값을 문자열에 삽입하는 방법으로 문자열을 생성합니다. 이를 위해 String.format() 메소드는 지정된 문자열 안에서 %d 형식 지정자를 사용합니다. %d는 정수 값을 대체할 수 있는 형식 지정자입니다.

따라서, String.format() 메소드는 지정된 문자열 <a href='calendar.jsp?year=%d&month=%d'><img src='images/left.gif' width ='10px' height = '10px'></a> 안에 전달된 정수 값을 대체하여 문자열을 생성합니다.

이 문자열은 변수 pp에 할당됩니다.


코드해석

위의 문자열에서 <year>와 <month>는 String.format() 메소드에 전달된 두 개의 정수 값을 대체하는 데 사용되는 형식 지정자입니다.

이 문자열은 HTML <a> 태그와 <img> 태그를 사용하여 이미지를 포함하는 링크를 만듭니다. <a> 태그는 calendar.jsp 페이지로 이동하는 링크를 만들고, <img> 태그는 왼쪽으로 화살표 이미지를 표시합니다. 이 링크를 클릭하면 calendar.jsp 페이지로 이동하고, 이때 year 및 month 매개 변수가 calendar.jsp 페이지로 전달됩니다. 이 매개 변수들은 페이지에서 사용되어 달력을 보여주는 데 사용될 수 있습니다.

이 문자열은 String.format() 메소드를 사용하여 구성되었으며, %d 형식 지정자를 사용하여 두 개의 정수 값을 문자열에 삽입합니다.

여기서 <year-1>year-1 변수 값으로 대체되며, <month>month 변수 값으로 대체됩니다. 따라서 이 링크는 현재 달력 페이지의 year 값에서 1을 뺀 값을 가지는 calendar.jsp 페이지로 이동합니다. 이전 코드와 마찬가지로, 이 링크를 클릭하면 페이지에서 해당 년도와 월에 해당하는 달력이 표시됩니다.

이 문자열은 pp라는 이름의 문자열 변수에 할당됩니다.

 

 

댓글