2012-01-16 14 views
62

jestem generowania identyfikatora GUID za pomocą poniższej instrukcji w moim koduGUID generujący bez myślnika

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

ale gdy GUID jest generowany, uważam, że zawiera znak myślnik też. W jaki sposób mogę wygenerować identyfikator GUID zawierający tylko litery (wielkie i małe litery) i liczby? Nie chcę łącznika. Czy ktoś może mi dać taki pomysł?

Odpowiedz

184

pamiętać, że mówimy o (kanonicznego) ciąg znaków z GUID. Sam Guid jest w rzeczywistości 128-bitową wartością całkowitą.

Można użyć specyfikatora "N" z przeciążeniem Guid.ToString(String).

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

Domyślnie litery są pisane małymi literami. GUID tylko wielkimi literami można osiągnąć jedynie poprzez ręczne przekształcając je wszystkie do wielkiej, np

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

GUID tylko z jednej litery lub cyfry nie ma sensu. Ciąg znaków GUID jest zapisany w systemie szesnastkowym, a więc zawsze (najprawdopodobniej) zawiera oba.

+0

czy jest możliwe utworzenie identyfikatora GUID z zarówno dużymi, jak i małymi literami wraz z liczbami ??? –

+5

@HarishKumar To nie ma sensu. Łańcuch GUID jest liczbą szesnastkową. W tym zapisie "a" jest takie samo jak "A". Chociaż z tego powodu możesz wydrukować każdą literę w wybranej obudowie (ale ja naprawdę nie widzę sensu w tym). –

+0

ale co chcę mieć to ciąg znaków, to mieszanka małych liter, wielkich liter i cyfr ... mogę osiągnąć dis sort ??? –

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

Podczas wykonywania tej czynności, jeśli nic innego, jest to dodatkowa praca (i najprawdopodobniej niepotrzebny przydział ciągów znaków). –