generowanie identyfikatora GUID bez łącznika

104

Generuję identyfikator GUID przy użyciu następującej instrukcji w moim kodzie

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

Ale kiedy generowany jest identyfikator GUID, okazuje się, że zawiera on również znak łącznika. Jak mam generować identyfikator GUID zawierający tylko litery (wielkie i małe litery) oraz cyfry? Nie chcę łącznika. Czy ktoś może mi dać taki pomysł?

Harish Kumar
źródło

Odpowiedzi:

273

Zwróć uwagę, że mówisz o (kanonicznej) reprezentacji ciągu Guid. Sam Guid jest w rzeczywistości 128-bitową wartością całkowitą.

Możesz użyć specyfikatora „N” z Guid.ToString(String)przeciążeniem.

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

Domyślnie litery są małymi literami. Przewodnik zawierający tylko wielkie litery można uzyskać tylko poprzez ręczne przekonwertowanie ich wszystkich na wielkie, na przykład:

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

Guid zawierający tylko litery lub cyfry nie ma sensu. Reprezentacja ciągu guid jest szesnastkowa i dlatego zawsze (najprawdopodobniej) będzie zawierała oba.

Christian.K
źródło
czy możliwe jest utworzenie identyfikatora GUID z wielkimi i małymi literami oraz liczbami ???
Harish Kumar
7
@HarishKumar To nie ma sensu. Łańcuch GUID to liczba szesnastkowa. W tym zapisie „a” oznacza to samo, co „A”. Chociaż dzięki temu możesz wydrukować każdą literę w dowolnej wielkości (ale naprawdę nie widzę w tym sensu).
Christian.K
ale chciałbym mieć ciąg znaków guid, który jest mieszaniną małych i dużych liter oraz cyfr ... czy mogę osiągnąć dis sort ???
Harish Kumar
7
@HarishKumar Jak zdecydowałbyś, które litery powinny być duże, a które małe? Oczywiście możesz to string.Replace(char, char)osiągnąć, ale tak naprawdę jest to bezcelowe i niepotrzebne. Rozważ opublikowanie nowego pytania i spróbuj zapytać, co naprawdę chcesz osiągnąć - wydaje się, że to coś więcej niż tylko pozbycie się łączników w ciągach GUID.
Christian.K,
0
Guid.NewGuid().ToString().Replace("-", string.Empty)
Bonshington
źródło
20
Chociaż to wykona zadanie, jeśli nic więcej, jest to dodatkowa praca (i najprawdopodobniej niepotrzebna alokacja ciągów znaków).
Christian.K