【问题标题】:.NET GUID uppercase string format.NET GUID 大写字符串格式
【发布时间】:2011-10-15 15:32:18
【问题描述】:

我需要将我的 GUID 格式化为虚线格式,全部大写。我知道使用myGuid.ToString("D")String.Format("{0:D}", myGuid) 会给出虚线格式,但是使用大写的D 而不是小写的d 不会像我想的那样给我一个大写的GUID。有没有办法在不做任何疯狂的事情的情况下做到这一点,或者我只需要打电话给myGuid.ToString().ToUpper()

【问题讨论】:

    标签: formatting guid string-formatting


    【解决方案1】:

    假设您有一个包含您的 Guid 的类,并且您希望保留键入的 Guid,您可以执行以下操作:

    public Guid Identifier { get; set; }
    
    public String FormattedIdentifier => Identifier.ToString().ToUpper();
    

    【讨论】:

    • 我认为它仍然提供了一些价值。我的示例展示了如何封装 Guid 的格式。
    【解决方案2】:

    注意RFC 4122,它定义了UUID规范,规定在将结构转换为字符串时,输出的十六进制字符应该是小写的:

      The hexadecimal values "a" through "f" are output as
      lower case characters and are case insensitive on input.
    

    这可以解释为什么 Guid 结构不支持直接输出为大写字符串。

    由于 ToString 格式提供程序参数被忽略,唯一的替代方法(不简单地将字符串转换为大写)是直接操作字节,同时注意保持字节顺序。简单地转换为大写(直接或通过扩展方法)可能要简单得多。

    【讨论】:

    • 2008-08 的国际规范,itu.int/rec/T-REC-X.667/en,同意 RFC 4122:6.5.4 Software generating the hexadecimal representation of a UUID shall not use upper case letters. NOTE – It is recommended that the hexadecimal representation used in all human-readable formats be restricted to lower-case letters. Software processing this representation is, however, required to accept both upper and lower case letters as specified in 6.5.2.
    • 我知道这已经有些老了,但我发现有趣的是,Visual Studio 中的“创建 GUID”工具会生成大写的 GUID。 WIX 工具集还建议 GUID 应为大写以提供完整支持。我不记得那条建议的具体内容,我只记得读过它。
    【解决方案3】:

    我只需要打电话给myGuid.ToString().ToUpper()

    是的。您可以努力创建自定义 IFormatProvider,但在这里似乎不值得。

    【讨论】:

      【解决方案4】:

      除了myGuid.ToString().ToUpper(),我认为你别无选择。虽然,你总是可以写一个扩展方法,比如ToUpperString,但我认为系统中没有内置任何东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-15
        • 1970-01-01
        • 2012-03-08
        • 2020-02-09
        相关资源
        最近更新 更多