создание GUID без дефиса

107

Я создаю GUID, используя следующий оператор в своем коде

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

Но когда создается GUID, я обнаруживаю, что он также содержит символ дефиса. Как мне создать GUID, состоящий только из букв (верхнего и нижнего регистра) и цифр? Я не хочу использовать дефис. Может ли кто-нибудь дать мне такую ​​идею?

Хариш Кумар
источник

Ответы:

276

Обратите внимание, что вы говорите о (каноническом) строковом представлении Guid. Сам Guid на самом деле представляет собой 128-битное целое число.

Вы можете использовать спецификатор «N» с Guid.ToString(String)перегрузкой.

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

По умолчанию буквы в нижнем регистре. Guid только с прописными буквами может быть получен только путем ручного преобразования их всех в прописные, например:

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

Руководство, состоящее только из букв или цифр, не имеет смысла. Строковое представление guid является шестнадцатеричным и поэтому всегда (что наиболее вероятно) будет содержать и то, и другое.

Christian.K
источник
возможно ли создать GUID с верхним и нижним регистром символов вместе с числами ???
Хариш Кумар
7
@HarishKumar В этом нет никакого смысла. Строка GUID - это шестнадцатеричное число. В этом обозначении «а» то же самое, что и «А». Хотя из-за этого вы можете печатать каждую букву в нужном вам корпусе (правда, я не вижу в этом смысла).
Christian.K
но я хочу иметь строку guid, которая представляет собой смесь нижнего регистра, верхнего регистра и цифр ... могу ли я добиться этого ???
Хариш Кумар
7
@HarishKumar Как бы вы решили, какие буквы должны быть верхними, а какие - строчными? Вы, конечно, можете свободно использовать string.Replace(char, char)для этого, но на самом деле это бессмысленно и ненужно. Подумайте о том, чтобы опубликовать новый вопрос и попытаться спросить, чего вы действительно хотите достичь - похоже, это больше, чем просто избавление от дефисов в строках GUID.
Christian.K
0
Guid.NewGuid().ToString().Replace("-", string.Empty)
Bonshington
источник
21
Хотя это сработает, если ничего больше, это дополнительная работа (и, скорее всего, ненужное выделение строк).
Christian.K