tire olmadan GUID oluşturma


107

Kodumda aşağıdaki ifadeyi kullanarak bir GUID oluşturuyorum

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

Ancak bir GUID oluşturulduğunda, kısa çizgi karakterini de içerdiğini görüyorum. Yalnızca harfler (büyük harf ve küçük harf) ve rakamlardan oluşan bir GUID oluşturmaya nasıl devam edebilirim? Tire istemiyorum. Birisi bana bu kadar fikir verebilir mi?

Yanıtlar:


276

Bir Guid'in (kanonik) dizgi temsilinden bahsettiğinizi unutmayın. Kılavuzun kendisi aslında 128 bitlik bir tamsayı değeridir.

Guid.ToString(String)Aşırı yükleme ile "N" tanımlayıcısını kullanabilirsiniz.

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

Varsayılan olarak harfler küçüktür. Yalnızca büyük harf içeren bir Kılavuz, yalnızca tümünü manuel olarak büyük harfe dönüştürerek elde edilebilir, örneğin:

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

Yalnızca harf veya rakamlardan oluşan bir kılavuz hiçbir anlam ifade etmiyor. Bir kılavuz dizge temsili onaltılıktır ve bu nedenle her zaman (büyük olasılıkla) her ikisini de içerir.


Sayılarla birlikte hem büyük hem de küçük karakterli bir GUID oluşturmak mümkün mü ???
Harish Kumar

7
@HarishKumar Bu hiç mantıklı değil. GUID dizesi, onaltılık bir sayıdır. Bu gösterimde 'a', 'A' ile aynıdır. Bu nedenle, kasadaki her harfi istediğiniz harfleri yazdırabilirsiniz (ama bunun bir anlamı yok).
Christian.K

ama sahip olmak istediğim şey, küçük harf, büyük harf ve sayıların karışımı olan bir kılavuz dizesidir ... dis sort elde edebilir miyim ???
Harish Kumar

7
@HarishKumar Hangi harflerin büyük hangilerinin küçük olması gerektiğine nasıl karar verirsiniz? Bunu string.Replace(char, char)başarmak için elbette özgürsünüz , ama gerçekten anlamsız ve gereksiz. Yeni bir soru göndermeyi düşünün ve gerçekte ne elde etmek istediğinizi sormaya çalışın - bu, GUID dizelerindeki tirelerden kurtulmaktan daha fazlası gibi görünüyor.
Christian.K

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

21
Bu işi yapacak olsa da, başka bir şey değilse, fazladan bir iştir (ve büyük olasılıkla gereksiz bir dize tahsisi).
Christian.K
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.