안녕하세요. 애드라이프 입니다.
이전 포스팅에 이어 이번에도 문자열 관련 포스팅입니다.
문자열을 다루는 여러가지 메소드들을 배웠는데요.
궁금하신분들은 아래 링크를 참고해 주세요.
이번에는 표시하는 방법을 정형화 하는!?
서석을 맞추는!? Format() 메소드에 대해서 배워볼 예정입니다.
그전에 지금까지 C# 관련포스팅을 하면서 매번 등장했던
WriteLine() 메소드를 기억하시나요?
문자를 Console창에 뿌려주는 역할을 수행하던 메소드였죠.
WriteLine() 메소드가 바로 Format()메소드를 사용하고 있어서
사용방법 또한 똑같기 때문입니다!!
지금까지 WriteLine() 메소드는
WriteLine("여기는 : {0},"애드라이프 블로그!!");
이런 구조로 사용해 왔습니다만, 정형화된 문자열을 구현하기
위해서는 아래와 같은 구조로 쓰이게 됩니다.
WriteLine("일이삼 = {0 , -1 : D}", 123})
{ }안의 구조가 바꼈는데요.
여기서 0은 첫번째 값인지 두번째 값인지 지정하는 인자
-1은 오른쪽,왼쪽 정렬중 왼쪽정렬 후 다음 문자열과 간격 1을 띄우는 것
마지막 D는 문자열 서식으로 10진수로 나타내는 것을 말합니다.
이 3가지 인자를 가지고 정렬된 문자열을 표기 할 수 있는데요.
프로그램을 보기 전에 WriteLine() 메소드 안의 String.Format()
메소드를 맛만 보고 가보도록 하겠습니다.
예를들어 string Str = String.Format("{0}456789", "123");
이라는 한줄이 있다고 가정해봅시다.
그럼 Str의 값은 무엇일까요?
다들 아시겠지만 "123456789"입니다.
string Str = String.Format("{0, -5}456789", "123");
string Str = String.Format("{0, 5}456789", "123");
이렇게 바꾸면 어떻게 될까요?
결과는
"123 456789"
" 123456789"
이런 결과가 나옵니다. 대충 이해가 되시나요?
그럼 프로그램을 보면서 개념을 다져보도록 하겠습니다.
//using System;
using static System.Console;
namespace String_format
{
class Program
{
static void Main(string[] args)
{
string preformat = "{0,-15}{1,-15}{2,20}";
//첫번째 문자열 좌측정렬에 다음 문자열과 간격 15,
//두번째 문자열 좌측정렬에 다음 문자열과 간격 15,
//세번째 문자열 우측정렬에 이전 문자열과 같격 20
WriteLine(preformat,"애드라이프1","블로그1","환영합니다1");
WriteLine(preformat, "애드라이프2", "블로그2", "환영합니다2");
WriteLine(preformat, "애드라이프3", "블로그3", "환영합니다3");
WriteLine(preformat, "애드라이프4", "블로그4", "환영합니다4");
WriteLine(preformat, "애드라이프5", "블로그5", "환영합니다5");
WriteLine(preformat, "애드라이프6", "블로그6", "환영합니다6");
}
}
}
그냥 문자열을 쓴다고 가정하면 예쁘고 정갈하게 쓰려면
참 많은 노력과 힘이 들어갈까요.. 지금은 딱 6줄이지만
만약 엄청많은 데이터를 정렬해야 한다고 생각하면 끔직하네요.
예쁘고 정갈한 결과 한번 보고 가겠습니다.
문자열이 깔끔하게 정리되니 제 기분이 다 좋네요.
이렇게 문자열을 정리하는 기능이 있다면....
숫자도 정리하는 기능이 있지 않을까요?
그래서 제가 준비했습니다.
하단 링크는 숫자 서식 문자열에 대하여 자세히 설명 되어있으며
예시 또한 훌륭하게 표시되어 있습니다.
123456이라는 숫자를
평범하게 10진수로 123456으로 나타낼때도 있지만
123,456처럼 표시 할 수도 있고 1.23456 처럼 할 수도 있습니다.
이보다 더 많은 표기법들이 정리되어 있는 링크 꼭 한번 봐보세요.
마지막으로 많이 사용하게 될 날짜나 시간들의 서식화를 보겠습니다.
보통 우리가 날짜나 시간을 볼때 2020년 04월 11일 오전 10시 10분 10초
뭐 사람들끼리는 초단위까지는 잘 신경쓰지 않지만 프로그램상에서 1초는
매우 긴시간이니까요~~
날짜 및 시간 서식도 아주 잘 정리된 링크를 공유합니다.
날짜 및 시간 관련 서식화는 몇 가지 예시를
보면 거의 이해가 되실꺼라 생각합니다.
이전에 날짜나 시간등의 서식을 사용하기 위해서는
DateTime 클래스가 필요합니다.(using System 필요)
DateTime 클래스 사용법은 아래와 같습니다.
참! 쉽죠? 만약 결과를 영문으로 받고 싶다!!
하시는 분이 있으시다면 CultureInfo 클래스를 사용하시면 됩니다.
CultureInfo클래스를 사용하기 위해는 System.Globaliztion의 선언이 필요니다.
그럼 전부 합처서 프로그램을 보면서 개념을 다져보겠습니다.
using System;
using System.Globalization;
using static System.Console;
namespace DateTimeTest
{
class Program
{
static void Main(string[] args)
{
DateTime datetime = new DateTime(2020,04,10,10,10,10);
WriteLine("12시간 형식 : {0:yyyy-MM-dd tt hh:mm:ss (ddd)}", datetime);
WriteLine("24시간 형식 : {0:yyyy-MM-dd HH:mm:ss (dddd)}", datetime);
CultureInfo cUs = new CultureInfo("en-US");
WriteLine(datetime.ToString("yyyy-MM-dd tt hh:mm:ss (ddd)", cUs));
WriteLine(datetime.ToString("yyyy-MM-dd HH:mm:ss (dddd)", cUs));
}
}
}
프로그램 상단을 보면
using System은 DateTime클래스를 위해 추가하였고
using System.Globalization은 CultureInfo클래스를 위해 추가했습니다.
CultureInfo 클래스를 이용해 국가를 변경하여 원하는 형식으로
시간을 표기 할 수 있습니다. CultureInfo 클래스에 사용된
국가코드가 궁금하신분들은 하단 링크를 참고해주세요.
결과를 보면 프로그램의 이해가 더 잘되죠?
저는 왜 바보같이 24시간 형식을 쓰고 시간을 10시로 했을까요?
오늘 포스팅은 여기까지입니다.
문자열 파헤치기도 마무리 되었습니다.
포스팅을 보시면서 궁금하신점이 있으시면
언제든지 댓글로 남겨 주시면 됩니다.
다음에는 더욱 유익한 포스팅으로 돌아오겠습니다.
by 애드라이프
'C# 프로그래밍 > 기초 다지기' 카테고리의 다른 글
C# 프로그램 시작하기 - 조건문(분기문) 다루기 #6 (0) | 2020.04.14 |
---|---|
C# 프로그램 시작하기 - 연산자! 놓치지 마세요. #5 (0) | 2020.04.13 |
C# 프로그램 시작하기 - 문자열 파헤치기 #4 (0) | 2020.04.10 |
C# 프로그램 시작하기 - 데이터 형식 익히기 #3-5 (0) | 2020.04.09 |
C# 프로그램 시작하기 - 데이터 형식 익히기 #3-4 (0) | 2020.04.08 |