.NET GUID大写字符串格式

Dan*_*fer 12 formatting guid string-formatting

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

drf*_*drf 15

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

  The hexadecimal values "a" through "f" are output as
  lower case characters and are case insensitive on input.
Run Code Online (Sandbox Code Playgroud)

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

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

  • 2008-08 的国际规范 http://www.itu.int/rec/T-REC-X.667/en 同意 RFC 4122:`6.5.4 生成 UUID 的十六进制表示的软件不得使用大写字母。注 — 建议将所有人类可读格式中使用的十六进制表示限制为小写字母。但是,处理此表示的软件需要接受 6.5.2 中规定的大小写字母。` (3认同)
  • 我知道这是一些旧的,但我发现 Visual Studio 中的“创建 GUID”工具生成大写 GUID 很有趣。此外,WIX 工具集建议 GUID 应该是大写的以获得完整支持。我不记得那条推荐的具体内容,我只记得读过它。 (2认同)

por*_*ges 12

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

是的.你可以去创建一个自定义的IFormatProvider,但这似乎不值得.