• [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(原著)
  • 相关阅读:
    【学习笔记】《架构整洁之道》(2)
    【学习笔记】《架构整洁之道》(1)
    《漫长的婚约》
    My 2020 work schedule
    canal-clientadapter 数据同步实验
    confluence异常关闭恢复
    nginx 添加第三方nginx_upstream_check_module 模块实现健康状态检测
    keepalived问题阐述及配置
    keepalived+lvs 部署
    lvs基础
  • 原文地址:https://www.cnblogs.com/kangao/p/5086978.html
Copyright © 2020-2023  润新知