摘要:格式字串
基礎常用格式化字串 :
經常會需要使用到字串的組合,記得就讀大學時,就常用運算子(+),將字串組合,並且非常喜愛運算子幫助自動轉換為字串,不過發現閱讀上不太容易,另外就是造成資源與效能的浪費,在字串這篇中有提到String object的特性,但有些時候,字串是固定不變,只是需要作組合,此時就可以用到格式化字串string.Format();
string headerText = "Dear jerry:";
string context = "My english is poor!";
string footText = "Thanks & Regards,jerry";
string mail = string.Format("標頭{0}\n內容:{1}\n\t{2}",
headerText,
context,
footText);
Console.WriteLine(mail);
Output :
這個範例不太好,因為Console.WriteLine()也可以如同string.Format()一樣可以放位置引數,並且對應參數列相對值。
.NET Framework還提供許多格式化的格式,以下展現貨幣與取到小數第二位
double number = 55212.1154;
Console.Write("原數值:{0},貨幣:{0:C0},\n"+
"取到小數二位:{0:F2}", number);
Output :
談到小數點就不能不提到in91哥寫那篇,在這篇當中完整說明相關的差異,可依照需求調整使用的格式化格式,在該文章結尾也提到一點個人認為也常用到的東西,就是既然轉成特殊的格式,總是會需要再取回作其他處理。
比較常用的時間格式化為字串:
DateTime date = DateTime.Now;
string NowDateTime = date.ToString();
Console.WriteLine("現在日期時間:" + NowDateTime);
string zhTWDate = date.ToString("D");
Console.WriteLine("本機標準日期:" + zhTWDate);
string shortDate = date.ToString("d"); //DateTime.Now.ToShortDateString();
Console.WriteLine("現在西元日期:" + shortDate);
string ShortTime = date.ToString("t"); //DateTime.Now.ToShortTimeString();
Console.WriteLine("現在時間" + ShortTime);
string NowTime = date.ToString("T");
Console.WriteLine("本機標準時間:" + NowTime);
Output :
自訂格式化 :
DateTime date = DateTime.Now;
string customerDateTime = date.ToString("yyyy/MM/dd hh:mm;ss");
Console.WriteLine("現在日期時間:" + customerDateTime);
Output :
這幾個範例下來,有沒有發現缺了星期幾,在自訂格式化可以使用dddd
string customerDateTime = date.ToString("dddd");
Console.WriteLine("今天是:" + customerDateTime);
Output :
文化特性
Allen於留言中提到的文化特性,這真的是我從來也沒想到,很直覺就覺得應該用本地化,而為何會自動本地化,伺服器如果設定不是台灣,那我能控制想要的文化版本嗎?如果不行這設計的美德,就變成一種負擔,所以當然可以改變。上課時,Allen也提到微軟有這樣的設計,那自己在設計工具時,當然也可以有,當時就感到納悶,那自己要怎麼設計?(實作某介面)
其實使用ToString時,如果要設定當地的文化,必須宣告CultureInfo 類別,來設定所要的文化。以下範例在不設定的情況下為當地的文化,所以顯示出來為NT。1
decimal number = 5000M;
string tw = number.ToString("C");
Console.WriteLine(tw);
但現在跟日本樂天合作,所以在日文版上,不能出現NT,當然要轉成日本當地的貨幣符號(先排除貨幣匯率與換算)
CultureInfo MyCulture = new CultureInfo("ja-JP");
decimal number = 5000;
string jp = number.ToString("C", MyCulture);
Console.Write(jp);
Output :
CultureInfo 類別透過這個類別可以設定文化特性(地區設定),來展現所需要的文化特性的格式。
結語:
標題自訂格式化可能會讓人誤解,可能會誤認為是類似西元轉民國的自訂格式化,不過功力還不到,期望未來自己也可以寫一篇C#版,格式化字串也經常用到,在完成這篇筆記,也發現許多以往不知道的事情與一些可以簡單化的方法,不用自己寫一堆,其實人家都已經寫好了,另外,格式化字串在Grid中也非常好用,產生報表時,可以直接顯現出想要的格式。
MSDN Library Reference :
Reference :
Allen blog 文化特性
in91 blog 數字格式
Allen blog 數字格式
.NET 隨筆 格式化相關整理
Other
註1:使用decimal,適合財務或貨幣計算,另外,decimal為十進位,float為二進位計算上會有差異。
如文章有錯誤,煩請告知,新人發帖請多包涵