在日常編程中,Guid是比較常用的,最常見的使用就是如下所示:
string id = Guid.NewGuid().ToString();
這條語句會產生一個新的Guid並轉成字串,如下:
// 10244798-9a34-4245-b1ef-9143f9b1e68a
但是還有一些情況下,我們會有一些細節上的差異,如:
- 前後有大括弧{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
- 中間沒有連字號 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- 前後是圓括弧(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
遇到這種情況就比較麻煩了,最常見的一種就是自己把guid產生的字串解析處理,比如加括弧,或者把連字號用Null 字元替換掉等:
var str = guid.ToString();var id = "{" + str + "}";var id2 = str.Replace("-", "");var id3 = "(" + str + ")";
其實不用這麼麻煩的,在ToString的時候,有一個重載的函數:
ToString(String)
通過傳入格式化字串,就可以輸出這種類型的guid 字串了。
樣本如下:
var guid = Guid.NewGuid();// 10244798-9a34-4245-b1ef-9143f9b1e68aConsole.WriteLine(guid.ToString("D"));// 102447989a344245b1ef9143f9b1e68aConsole.WriteLine(guid.ToString("N"));// {10244798-9a34-4245-b1ef-9143f9b1e68a}Console.WriteLine(guid.ToString("B"));// (10244798-9a34-4245-b1ef-9143f9b1e68a)Console.WriteLine(guid.ToString("P"));
注意:這裡的D,N,B,P是不區分大小寫,如果傳入Null 字元串,則使用的預設的D類型,其它情況都會報異常。
在MSDN中查詢到還有一種“X”類型,但是我在.NetFx 3.5下,使用時會彈出異常:
未處理的異常: System.FormatException: 格式字串只能是“D”、“d”、“N”、“n ”、“P”、“p”、“B”或“b”。
在 System.Guid.ToString(String format, IFormatProvider provider)