개발/C#

문자열다루기2

민돌이2 2019. 2. 2. 03:19

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클래스가 필요하다.

(http://msdn.microsoft.com/ko-kr/8kb3ddd4)

DateTime dt = new DateTime(2019, 02, 10, 13, 23, 20);

WriteLine("{0}", dt);

 

서식

대상자

대상 서식

설명

연도

 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;
using static System.Console;
using System.Globalization;

 

namespace PracticeCS
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime dt = new DateTime(2019, 02, 10, 13, 23, 20);
            CultureInfo ciEN = new CultureInfo("en-US");
            WriteLine(dt.ToString("yyyy-mm-dd tt hh:mm:ss (ddd)", ciEN));
        }
    }
}

 

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?"큼":"작음")}");

 

728x90