Section 12.6: 사용자 지정 숫자 서식 사용하기

NumberFormatInfo 를 이용하여 정수 및 실수값에 대한 서식을 지정할 수 있다.

// invariantResult 는 "1,234,567.89" 이다. var invarianResult = string.Format(CultureInfo.InvariantCulture, "{0:#,###,##}", 1234567.89); // NumberFormatInfo 는 IFormatProvider 를 구현 (implement) 하는 클래스 중 하나이다 var customProvider = new NumberFormatInfo { NumberDecimalSeparator = "_NS_", // ',' 대신에 사용될 문자열이다 NumberGroupSeparator = "_GS_", // '.' 대신에 사용될 문자열이다 }; // customResult is "1_GS_234_GS_567_NS_89" var customResult = string.Format(customProvider, "{0:#,###.##}", 1234567.89);
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 12.5: 통화 (currency) 서식 지정하기

"c" (혹은 currency) 서식 지정자는 주어진 숫자를 통화량을 나타내는 문자열로 변환하여 준다.

string.Format("{0:c}", 112.236677) // $112.23 - 시스템에 설정된 기본 형식

소수점 아래 정밀도 (precision)

기본 값은 2 로 설정되어 있다. c1, c2, c3 과 같은 값들을 기술함으로써 정밀도를 조정할 수 있다.

string.Format("{0:C1}", 112.236677) //$112.2 string.Format("{0:C3}", 112.236677) //$112.237 string.Format("{0:C4}", 112.236677) //$112.2367 string.Format("{0:C9}", 112.236677) //$112.236677000

통화 기호 (currency symbol)

  1. 사용자 설정 문화권 기호를 사용하려면 CultureInfo 인스턴스를 인자로 넘긴다.
    string.Format(new CultureInfo("en-US"), "{0:c}", 112.236677); //$112.24 string.Format(new CultureInfo("de-DE"), "{0:c}", 112.236677); //112,24 € string.Format(new CultureInfo("hi-IN"), "{0:c}", 112.236677); //₹112.24
  2. 임의의 문자열을 통화 기호로 사용한다. NumberFormatInfo 를 사용하여 통화 기호를 원하는대로 변경할 수 있다.
    NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat; nfi = (NumberFormatInfo) nfi.Clone(); nfi.CurrencySymbol = "?"; string.Format(nfi, "{0:C}", 112.236677); //?112.24 nfi.CurrencySymbol = "?%^&"; string.Format(nfi, "{0:C}", 112.236677); //?%^&112.24

통화 기호의 위치

양수값에 대해서는 CurrencyPositivePattern 을, 음수값에 대해서는 CurrencyNegativePattern 을 사용한다.

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat; nfi.CurrencyPositivePattern = 0; string.Format(nfi, "{0:C}", 112.236677); //$112.24 - default nfi.CurrencyPositivePattern = 1; string.Format(nfi, "{0:C}", 112.236677); //112.24$ nfi.CurrencyPositivePattern = 2; string.Format(nfi, "{0:C}", 112.236677); //$ 112.24 nfi.CurrencyPositivePattern = 3; string.Format(nfi, "{0:C}", 112.236677); //112.24 $

음수값에 대한 사용법 역시 양수값 예제인 위 예제와 유사하다. 더욱 많은 사용법을 위해서는 위에서 소개된 링크를 참조하도록 한다.

사용자 지정 소수점 구분자

NumberFormatInfo nfi = new CultureInfo( "en-US", false ).NumberFormat; nfi.CurrencyPositivePattern = 0; nfi.CurrencyDecimalSeparator = ".."; string.Format(nfi, "{0:C}", 112.236677); //$112..24
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 12.4: 날짜 서식 지정하기

DateTime date = new DateTime(2016, 07, 06, 18, 30, 14); // 형식: 년, 월, 일, 시, 분, 초 Console.Write(String.Format("{0:dd}",date)); // 문화권 정보를 이용하여 서식 출력하기 String.Format(new System.Globalization.CultureInfo("mn-MN"),"{0:dddd}",date); /* 다음은 c# 버전 6.0 이상에서 지원하는 문법이다 */ Console.Write($"{date:ddd}");

출력결과 :

06 Лхагва 수
지정자 의미 사용 예 출력결과
d 날짜 {0:d} 7/6/2016
dd 0 으로 여백 문자를 채워 넣은 (padded) 날 (Day) 정보 {0:dd} 06
ddd 짧은 요일 이름 {0:ddd} Wed
dddd 긴 요일 이름 {0:dddd} Wednesday
D 긴 형식의 날짜 {0:D} Wednesday, July 6, 2016
f 짧은 형식의 날짜 및 시간 정보 {0:f} Wednesday, July 6, 2016 6:30 PM
ff 시간 정보 중 초에 대한 소수점 이하 2 자리 {0:ff} 20
fff 시간 정보 중 초에 대한 소수점 이하 3 자리 {0:fff} 201
ffff 시간 정보 중 초에 대한 소수점 이하 4 자리 {0:ffff} 2016
F 긴 형식의 날짜 및 시간 정보 {0:F} Wednesday, July 6, 2016 6:30:14 PM
g 날짜 및 시간 기본 형식 {0:g} 7/6/2016 6:30 PM
gg 연대 {0:gg} A.D
hh 시간 (2 자리 숫자, 12시간 기준) {0:hh} 06
HH 시간 (2 자리 숫자, 24시간 기준) {0:HH} 18
M 월 / 일 정보 {0:M} July 6
mm 0 으로 여백 문자를 채워 넣은 (padded) 분 정보 {0:mm} 30
MM 0 으로 여백 문자를 채워 넣은 (padded) 월 정보 {0:MM} 07
MMM 3 글자의 월 이름 {0:MMM} Jul
MMMM 정식 월 이름 {0:MMMM} July
ss {0:ss} 14
r RFC1123 형식 날짜 {0:r} Wed, 06 Jul 2016 18:30:14 GMT
s 정렬 가능한 날짜 문자열 {0:s} 2016-07-06T18:30:14
t 짧은 형식의 시간 정보 {0:t} 6:30 PM
T 긴 형식의 시간 정보 {0:T} 6:30:14 PM
tt AM/PM {0:tt} PM
u 정렬 가능한 UTC 형식의 로컬 시간 정보 {0:u} 2016-07-06 18:30:14Z
U 정식 UTC 시간정보 {0:U} Wednesday, July 6, 2016 9:30:14 AM
Y 연도와 월 {0:Y} July 2016
yy 2 자리 숫자로 표현된 연도 {0:yy} 16
yyyy 4 자리 숫자로 표현된 연도 {0:yyyy} 2016
zz 2 자리 숫자로 표현된 표준 시간대 정보 {0:zz} +09
zzz 정식 표준 시간대 정보 {0:zzz} +09:00
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 12.3: 사용자 정의 형식 공급자 (custom format provider) 생성하기

public class CustomFormat: IFormatProvider, ICustomFormatter { public string Format(string format, object arg, IFormatProvider formatProvider) { if (!this.Equals(formatProvider)) { return null; } if (format == "Reverse") { return String.Join("", arg.ToString().Reverse()); } return arg.ToString(); } public object GetFormat(Type formatType) { return formatType == typeof (ICustomFormatter) ? this : null; } }

사용법:

String.Format(new CustomFormat(), "-> {0:Reverse} <-", "Hello World");

출력 결과:

-> dlroW olleH <-
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 12.2: String.Format 이 프레임웍 내에 '내장된 (embedded)' 경우들

때때로 String.Format 메소드를 간접적으로 사용할 수 있는 경우를 발견할 수 있다: 이러한 방식은 메소드의 overloading 된 시그니처 중 string format, params object[] args 형태가 존재하는 경우 사용할 수 있다, 예를 들어:

Console.WriteLine(String.Format("{0} - {1}", name, value));

위와 같은 코드는 더욱 간결한 형태인 아래의 코드로 대체할 수 있다:

Console.WriteLine("{0} - {1}", name, value);

이 외에도 String.Format 을 간접적으로 이용할 수 있는 다른 메소드들도 존재한다. 다음의 예들이 바로 그러한 경우에 해당한다:

Debug.WriteLine(); // Print() 도 마찬가지이다 StringBuilder.AppendFormat();
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 12.1: C# 6.0 부터 추가된 기능 (String Interpolation)

Version ≥ 6.0

C# 6.0 부터는 String.Format 을 대신하여 문자열 보간 (string interpolation) 기능을 사용할 수 있다.

string name = "John"; string lastname = "Doe"; Console.WriteLine($"Hello {name} {lastname}!");
Hello John Doe!

더욱 많은 예제는 이 페이지 에서 찾아볼 수 있다.

본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Chapter 12: String.Format

파라미터 설명
format args 가 어떠한 서식을 통해 문자열로 합성되어야 하는지를 정의하는 복합 형식 문자열 (composite format string) 을 나타낸다.
args 문자열로 합성이 되어야 할 연속된 객체들의 집합. params 형식의 인자를 받게 되어있으므로, 사용자는 쉼표로 구분되어진 (comma-separated) 인자 목록을 사용하거나 실제 객체 배열을 사용할 수 있다.
provider 객체들을 문자열로 서식화하기 위한 방법. 대표적인 값들로는 CultureInfo.InvariantCultureCultureInfo.CurrentCulture 등이 있다.

Format 메소드는 System.String 클래스에서 제공하는 동일한 이름의 오버로딩된 메소드들의 집합 으로써, 이는 인자로 주어진 객체들을 특정 문자열 형식에 따라 새로운 문자열을 만들어 내기 위해 사용된다. 여기에 소개된 정보들은 String.Format 메소드 뿐만 아니라, 각종 WriteLine 계열의 메소드들 및 .NET 프레임워크에서 제공하는 다른 메소드들에도 동일하게 적용될 수 있다.

본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

Section 11.19: 문자열 이어붙이기

문자열을 이어붙이는 방법으로는 System.String.Concat 메소드를 이용하거나, 아니면 (더욱 손쉬운 방법인) + 연산자를 이용하는 방법이 있다:

string first = "Hello "; string second = "World"; string concat = first + second; // concat = "Hello World" concat = String.Concat(first, second); // concat = "Hello World"

C# 6 에서는 아래와 같은 방법 역시 사용 가능하다:

string concat = $"{first},{second}";

역주: 이 방법은 "10.1: 보간된 축자 문자열 (Interpolated Verbatim String)" 에서 소개되었건 문자열 보간 (string interpolation) 에 대한 설명입니다.

본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts