개발/C#

[Effective C#] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라

huiyu 2021. 1. 21. 06:00

문자열 보간 기능 -> 링크

 문자열 보간 기능 '$'을 이용하여 생성된 문자열은 1)단순 문자열일 수도 있지만, 2)FormattableString을 상속할 타입일 수도 있다.

1)문자열 : 문자열 자체

string first = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";

2) FormattableString : format문자열과 format에 구성될 argument로 구성(MS)

FormattableString second = $"It's the {DateTime.Now.Day} of the {DateTime.Now.Month} month";

*FormattableString 객체라면 컴퓨터에 지정된 문화권을 고려하여 문자열을 생성할 수 있다.
(소수를 출력할때 미국이라면 소수점기호 '.', 유럽 대부분 국가라면 소수점기호 ','가 적용되도록 구현할 수 있다.)

public static string ToGerman(FormattableString src)
{
  return string.Format(null, 
                       System.Globalization.CultureInfo.CreateSpecificCulture("de-DE"),
                       src.Format,
                       src.GetArguments());
}

public static string ToFrenchCanada(FormattableString src)
{
  return string.Format(null, 
                       System.Globalization.CultureInfo.CreateSpecificCulture("fr-CA"),
                       src.Format,
                       src.GetArguments());
}

string.Format : 합성된 문자열 반환 (MS)

-> 문자열 보간 기능은 글로벌화나 로컬화에 필요한 모든 기능을 갖추고 있다. 문화권을 고려하여 문자열을 생성하는 복잡한 기능을 잘 감추고 있기도 하다. 문화권을 지정이 필요한 경우 FormattableString 객체를 생성하도록 코드를 작성하는 방법을 이용한다.

** 아직 FormattableString을 사용해본적이 는데, 잘 기억해뒀다 필요한 상황에 이를 이용해보자.

[참고]
Effective C# 아이템 5:문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라.

728x90
반응형