[c#美味] Guid ToString 格式知多少?


在日常編程中,Guid是比較常用的,最常見的使用就是如下所示:

string id = Guid.NewGuid().ToString();

這條語句會生成一個新的Guid並轉成字符串,如下:

// 10244798-9a34-4245-b1ef-9143f9b1e68a

但是還有一些情況下,我們會有一些細節上的差異,如:

  • 前后有大括號{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
  • 中間沒有連字符 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • 前后是圓括號(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)

遇到這種情況就比較麻煩了,最常見的一種就是自己把guid生成的字符串解析處理,比如加括號,或者把連字符用空字符替換掉等:

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-9143f9b1e68a Console.WriteLine(guid.ToString("D")); // 102447989a344245b1ef9143f9b1e68a Console.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是不區分大小寫的,如果傳入空字符串,則使用的默認的D類型,其它情況都會報異常。

在MSDN中查詢到還有一種“X”類型,但是我在.NetFx 3.5下,使用時會彈出異常:

未處理的異常:  System.FormatException: 格式字符串只能是“D”、“d”、“N”、“n ”、“P”、“p”、“B”或“b”。
   在 System.Guid.ToString(String format, IFormatProvider provider)
該文章轉發微博為: http://www.cnblogs.com/greenerycn/archive/2010/04/25/guid_tostring_format.html(原著)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM