我需要用虚线格式格式化guid,全部大写。我知道使用myGuid.ToString("D")
或String.Format("{0:D}", myGuid)
会给出虚线格式,但是使用大写的D
而不是小写的d
不会像我想象的那样给我一个大写的GUID。有没有一种方法可以做到这一点,而不做任何疯狂的事情,或者我只需要调用myGuid.ToString().ToUpper()
?
注意,定义了UUID规范的RFC 4122规定,在将结构转换为字符串时,输出的十六进制字符应该是小写的:
The hexadecimal values "a" through "f" are output as
lower case characters and are case insensitive on input.
这也许可以解释为什么Guid结构不支持直接作为大写字符串输出。
由于ToString格式提供程序参数被忽略,唯一的替代方法(不简单地将字符串转换为大写)将是直接操作字节,同时注意保留端序。简单地转换为大写(直接或通过扩展方法)可能更直接。
我是否只需要调用
myGuid.ToString().ToUpper()
是的。您可以创建一个自定义的IFormatProvider,但在这里似乎不值得这样做。
我认为你除了做myGuid.ToString().ToUpper()
没有其他选择。虽然,您总是可以编写一个扩展方法,也许是ToUpperString
之类的东西,但我认为系统中没有内置任何东西。
假设您有一个保存Guid的类,并且您希望保留类型化的Guid,您可以这样做:
public Guid Identifier { get; set; }
public String FormattedIdentifier => Identifier.ToString().ToUpper();