Effective C# (Covers C# 6.0), (includes Content Update Program): 50 Specific Ways to Improve Your C#, 3rd Edition By Bill Wagner 讀後心得
Item 4 提到使用 Iterpolated Strings 讓組合字串更容易且彈性。此章節進一步延伸;當有多國語系的輸出需求時,建議使用 FormattableString 以達到需求。
範例程式碼:
public void testForamattableString( )
{
var value = 12.98d;
FormattableString original = $"The value is {value} and it's {DateTime.Now}.";
var germanFormat = original.convertToGerman( );
var usFormat = original.convertToUS( );
Debug.WriteLine( $"German format : {germanFormat}" );
Debug.WriteLine( $"US format : {usFormat}" );
}
public static class Extensions
{
public static string convertToGerman( this FormattableString str )
{
return string.Format(
System.Globalization.CultureInfo.CreateSpecificCulture( "de-DE" ),
str.Format,
str.GetArguments( ) );
}
public static string convertToUS( this FormattableString str )
{
return string.Format(
System.Globalization.CultureInfo.CreateSpecificCulture( "en-US" ),
str.Format,
str.GetArguments( ) );
}
}
Output:
German format : The value is 12,98 and it's 09.02.2017 14:36:42.
US format : The value is 12.98 and it's 2/9/2017 2:36:42 PM.
結論:
1. 當有多國語系輸出需求時,需明確宣告 interpolated Strings 型別為 FormattableString。
2. 利用 string.Format 方法帶入 FormattableString 參數,並回傳對應目標語系的字串。
1. 當有多國語系輸出需求時,需明確宣告 interpolated Strings 型別為 FormattableString。
2. 利用 string.Format 方法帶入 FormattableString 參數,並回傳對應目標語系的字串。