2012-01-16 89 views
62

我使用下面的語句在我的代碼生成GUID沒有連字符

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

但是,生成一個GUID生成一個GUID的時候,我發現它包含了連字符了。我如何着手生成一個只有字母(大寫和小寫)和數字的GUID?我不想要連字符。有人能給我這麼個想法嗎?

回答

184

請注意,您正在討論Guid的(規範)字符串表示形式。 Guid本身實際上是一個128位整數值。

您可以使用「N」說明符和Guid.ToString(String)過載。

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

默認情況下,字母是小寫字母。僅用大寫字母一個GUID只能通過手動它們全部轉換爲大寫,例如來實現:

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

甲僅任一字母或數字的GUID是沒有意義的。 guid字符串表示是十六進制的,因此將永遠(最有可能)包含兩者。

+0

是否可以使用大寫字母和小寫字母以及數字創建一個GUID? – 2012-01-16 08:55:16

+5

@HarishKumar這沒有任何意義。 GUID字符串是一個十六進制數字。在該符號中,'a'與'A'相同。雖然由於這個原因,你可以打印你想要的盒子裏的每一個字母(但是我真的沒有看到這一點)。 – 2012-01-16 08:56:54

+0

但我想要的是一個guid字符串,這是一個混合的小寫字母,大寫字母和數字...我可以實現不同類別? – 2012-01-16 09:01:29

1
Guid.NewGuid().ToString().Replace("-", string.Empty) 
+13

雖然這將完成這項工作,但如果沒有其他工作,這是額外的工作(並且很可能是不必要的字符串分配)。 – 2012-01-16 09:02:36