生成不带连字符的GUID


104

我正在代码中使用以下语句生成GUID

byte[ ] keyBytes = Encoding.UTF8.GetBytes( Guid.NewGuid( ).ToString( ).Substring( 0, 12 ) );

但是,当生成GUID时,我发现它也包含连字符。如何生成仅包含字母(大写和小写)和数字的GUID?我不要连字符。有人可以给我这样的主意吗?

Answers:


273

请注意,您在谈论的是Guid的(规范)字符串表示形式。Guid本身实际上是一个128位整数值。

您可以将“ N”说明符与Guid.ToString(String)重载一起使用。

Guid.NewGuid().ToString("N");

默认情况下,字母为小写。只有大写字母的Guid只能通过将它们全部手动转换为大写字母来实现,例如:

Guid.NewGuid().ToString("N").ToUpper();

只有字母或数字的guid没有意义。引导字符串表示形式为十六进制,因此将始终(很有可能)同时包含两者。


是否可以同时创建带有大写和小写字符以及数字的GUID?
哈里斯·库玛

7
@HarishKumar这没有任何意义。GUID字符串是一个十六进制数字。在这种表示法中,“ a”与“ A”相同。因此,尽管可以在外壳中打印每个字母(但是我真的看不到任何意义)。
Christian.K

但是我希望有一个Guid字符串,它是小写,大写和数字的混合...我可以实现排序吗???
哈里斯·库玛

7
@HarishKumar您如何确定哪些字母应为大写,哪些字母应为小写?当然,您可以随意使用它string.Replace(char, char)来实现此目的,但实际上这是毫无意义且不必要的。考虑发布一个新问题并尝试询问您真正想要实现的目标-它似乎不仅仅是摆脱GUID字符串中的连字符。
Christian.K

0
Guid.NewGuid().ToString().Replace("-", string.Empty)

20
尽管这可以完成工作,但是如果没有其他事情,那就是额外的工作(很可能是不必要的字符串分配)。
Christian.K
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.