2022. 3. 9. 16:29ㆍLanguages/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()보다는 문자열 보간이 더 편리해 보이긴 한다.
'Languages > C#' 카테고리의 다른 글
[C#] TryParse() VS Parse() (0) | 2022.03.13 |
---|---|
[C#] Null과 관련된 연산자들(?, [ ]?, ??) (0) | 2022.03.13 |
[C#] Nullable (0) | 2022.03.09 |
[C#] CLR(Common Language Runtime)과 네이티브 코드(Native Code) (0) | 2022.03.09 |
[C#] 프로퍼티(Property) (0) | 2022.02.15 |