[C#] 문자열 서식 맞추기 (string.Format(), 문자열 보간)

2022. 3. 9. 16:29Languages/C#

*이 글은 <이것이 C#이다> 책을 바탕으로 공부한 글입니다.

 

 

 

숫자만큼 많이 다루는 게 문자열이라고 했다. 문자열을 다루다 보면, 서식을 갖출 필요가 있을 때가 있다.

Publisher           Author                                  Title
Marvel              Stan Lee                             Iron Man
Hanbit              Sanghyun Park                      This is C#
Prentice Hall       K&R                The C Programming Language

 

유용하게 다룰 수 있는 C#의 문자열 서식 관련 기능들을 공부해봤다.

 

 

1. string.Format( )

 

Format( ) 메소드의 매개변수 형식은 다음과 같다.

{첨자, 맞춤:서식 문자열}

 

첨자문자열의 틀을 말한다. 사용 예시를 보면 다음과 같다.

*WriteLine 함수도 string.format()을 기반으로 한다고 한다.)

Console.WriteLine("{0}", "Hello");   // Hello 출력

 

위 코드에서 {0}, {1}, ...를 일컬어 서식 항목(Format Item)이라고 하며, 뒤에서 받은 인자들이 숫자 순서대로 들어가게 된다.

 

 

맞춤왼쪽/오른쪽 맞춤에 사용되는 옵션이다. 왼쪽부터 맞추고 싶다면 음수값을 주면 된다.

Console.WriteLine("{0, -10}DEF", "ABC");

// "ABC       DEF" 출력

 

즉, DEF 앞에 10개의 문자가 들어갈 공간을 만들어 두고, 왼쪽부터 ABC를 채워넣는 것이다. (빈 부분은 공백으로 처리)

오른쪽 맞춤을 하고 싶다면 다음과 같이 하면 된다.

Console.WriteLine("{0, 10}DEF", "ABC");

// "      ABCDEF" 출력

 

 

서식 문자열변환 서식 지정 문자열을 의미한다. "123"이란 수를 정수로 나타낼지, 실수로 나타낼지, 16진수로 나타낼지에 대한 것을 지정하는 부분이라고 생각하면 된다.

Console.WriteLine("{0:D}", 255);    	 // 255를 10진수로 출력  -> 255 출력
Console.WriteLine("{0:D}", 0xFF);    	 // 0xFF를 10진수로 출력 -> 255 출력


Console.WriteLine("{0:X}", 255);  	     // 255를 16진수로 출력  -> 0xFF 출력
Console.WriteLine("{0:X}", 0xFF);   	 // 0xFF를 16진수로 출력 -> 0xFF 출력


Console.WriteLine("{0:N}", 123456789);  // 입력된 수를 콤마로 구분하여 출력
                                        // -> 123,456,789.00 출력


Console.WriteLine("{0:F}", 123.45);     // 입력된 수를 고정소수점 형식으로 서식화
                                        // -> 123.45 출력


Console.WriteLine("{0:E}", 123.456789); // 입력된 수를 지수 표기로 서식화
                                        // -> 1.234568E+002

 

자릿수 지정자(Precision Specifier)와 함께 사용할 수도 있다.

Console.WriteLine("{0:D5}", 123);          // 00123

Console.WriteLine("{0:X8}", 0xFF1234);     // 0x00FF1234

Console.WriteLine("{0:N0}", 123456789);    // 123,456,789 (자릿수 0은 소수점 이하 버림)

Console.WriteLine("{0:F5}", 123.456);      // 123.45600

 

 


2. 문자열 보간

 

C# 6.0에서 새로 도입된 기능으로 더 간결하게 문자열의 양식을 맞출 수 있도록 도와준다.

string name = "DaekYou";
int age = 25;

Console.WriteLine($"{name, -10}, {age:D3}");                     // "DaekYou   , 023"
Console.WriteLine($"{name}, {age,-10:D3}");                      // "DaekYou, 030       "
Console.WriteLine($"{name}, {(age > 20 ? "성인":"미성년자")}");   // "DaekYou, 성인"

 

개인적인 생각이지만, Format()보다는 문자열 보간이 더 편리해 보이긴 한다.

 

 

728x90
반응형