문자열다루기2
4.문자열 서식 맞추기
프로그램에서 서식이란 낱말, 글꼴이 아니라 문자열이 일정한 틀을 갖추는 것을 의미
string형식의 Format( )메소드와 문자열 보간의 방법 2가지가 있다.
예
제품명 : 망고주스 가격 : 1,500원 용량 : 250ml 유통기한 : 2034-10-20 12:11:11 |
제품명 : 자몽주스 가격 : 1,700원 용량 : 250ml 유통기한 : 2031-09-03 17:32:47 |
4.1Format( )메소드
Console.WriteLine( )메소드를 사용할 떄 내부에서 string.Format( )메소드를 사용하고 있음
Console.WriteLine("제목 : {0}" , "이것이 C#이다."); |
제목 : 이것이 C#이다. |
{0}에서 지금까지 서식항목의 첨자만 사용한 것이다.
{첨자, 맞춤: 서식 문자열} |
첨자 : 서식 항목의 첨자(배열이라 생각) |
맞춤 : 좌/우 맞춤 | |
서식 문자역 : 변환서식 지정 문자열 |
예
Console.WriteLine("제목 : {0, -7 : D}", 123); // 첨자 : 0 맞춤 : -7 서식 문자열 : D |
왼쪽/오른쪽 맞춤
서식 항목의 맞춤 옵션을 지정하면 해당 서식 항목이 차지할 공간의 크기를 선택가능하며, 그 공간에서 왼쪽 또는 오른쪽에 데이터를 할당할지 결정할 수 있다.
서식 항목에서 맞춤 옵션이 음수일시 왼쪽, 양수일시 오른쪽이다.
using System; using static System.Console;
namespace PracticeCS { class Program { static void Main(string[] args) { string lr = "{0,-20}{1,-15}{2,30}"; WriteLine(lr, "Pulisher", "Author", "Title"); WriteLine(lr, "Marvel", "Stan Lee", "Iron Man"); WriteLine(lr, "Hanbit", "Sanghyun Park", "C# Programming"); WriteLine(lr, "Pretice Hall", "K&R", "The C Progamming Language"); } } } |
|
숫자 서식화
123456789라는 수가 있다고 가정할 때 123,456,789혹은 0x75BCD15(16진수)로도 나타낼 수있다.
서식 문자열은 서식 지정자와 함께 자릿수 지정자를 사용가능(D5는 123 -> 00123)
콤마( , )가 아닌 콜론( : )이다.
서식 문자열에서 대상 서식을 선택하여 사용할 수 있다.
(http://msdn.microsoft.com/ko-kr/dwhawy9k)
서식 지정자 |
대상 서식 |
설명 |
D |
10진수 |
WriteLine("{0:D}", 255 } //255 WriteLine("{0:D}", 0xFF } //255 |
X |
16진수 |
WriteLine("{0:X}", 255 } //0xFF WriteLine("{0:X}", 0xFF } //0xFF |
N |
콤마( , ) |
WriteLine("{0:N}", 123456789 } //123,456,789.00 WriteLine("{0:N0}", 123456789 } //123,456,789 |
F |
고정소수점 |
WriteLine("{0:F}", 123.45 } //123.45 |
E |
지수 |
WriteLine("{0:E}", 123.456789 } //1.2345678E+002 |
날짜 및 시간 서식화
날짜와 시간을 표현하기 위해서는 DateTime클래스가 필요하다.
DateTime dt = new DateTime(2019, 02, 10, 13, 23, 20); WriteLine("{0}", dt); |
|
서식 대상자 |
대상 서식 |
설명 |
y |
연도 |
yyyy: 2019-02-05 13:03:02 yy : 19-02-05 13:03:02 |
M |
월 |
MM : 2019-02-05 13:03:02 M : 2019-2-05 13:03:02 |
d |
일 |
dd : 2019-02-05 13:03:02 d : 2019-02-5 13:03:02 |
h |
시(1~12) |
hh : 2019-02-05 01:03:02 h : 2019-02-05 1:03:02 |
H |
시(1~23) |
HH : 2019-02-05 13:03:02 H : 2019-02-05 13:03:02 |
m |
분 |
mm : 2019-02-05 13:03:02 m : 2019-02-05 13:3:02 |
s |
초 |
ss : 2019-02-05 13:03:02 s : 2019-02-05 13:03:2 |
tt |
오전/오후 |
tt : 2019-02-05 오후 13:03:02 |
ddd |
요일 |
dddd : 2019-02-05 13:03:02 일요일 ddd : 2019-02-05 13:03:02 일 |
우리나라형식이 아닌 외국 형식으로 써야 하는경우 CulterInfo클래스를 사용한다.
Globalization헤더를 추가해야한다.
(http://msdn.microsoft.com/ko-kr/bb896001.aspx)
using System;
namespace PracticeCS |
|
4.2문자열 보간
문자열 보간과 Format( )메소드의 차이점은 $를 사용하고 서식항목에서 첨자대신 식이 들어간다.
변수나 객체의 이름을 그대로 사용가능, 상수 입력해 사용가능
string.Format( ) |
문자열 보간 |
WriteLine("{0} {1}", 12, 34); |
WriteLine($"{12} {34}"); |
WriteLine("{0, -10, D5}", 123); |
WriteLine($"{123, -10, D5}"); |
int n = 123; string s = "민주"; WriteLine("{0} {1}", n, s); |
int n = 123; string s = "민주"; WriteLine($"{n} {s}"); |
int n = 123; WriteLine("{0}", n > 100?"큼":"작음"); |
int n = 123; WriteLine($"{(n > 100?"큼":"작음")}"); |