Guid ToString 格式

Posted 天王星天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Guid ToString 格式相关的知识,希望对你有一定的参考价值。

http://www.cnblogs.com/greenerycn/archive/2010/04/25/guid_tostring_format.html

 

在日常编程中,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)

以上是关于Guid ToString 格式的主要内容,如果未能解决你的问题,请参考以下文章

Guid几种格式及之间的互换,以及利用Base64缩短guid的长度到22个字符和还原

Guid 几种格式化

向您求助你好,.sln中的解决方案GUID和项目编号怎么生成,正在做代码生成器,想生成Vs可以运行的整个解决方案

为啥 Guid.ToString("n") 与从相同 guid 的字节数组生成的十六进制字符串不同?

C#生成唯一的ID保存到数据库

Guid.NewGuid()