gerando GUID sem hífen

104

Estou gerando um GUID usando a seguinte instrução em meu código

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

Mas, quando um GUID é gerado, acho que ele também contém o caractere de hífen. Como faço para gerar um GUID apenas com letras (maiúsculas e minúsculas) e números? Eu não quero o hífen. Alguém pode me dar essa ideia?

Harish Kumar
fonte

Respostas:

273

Observe que você está falando sobre a representação de string (canônica) de um Guid. O próprio Guid é, na verdade, um valor inteiro de 128 bits.

Você pode usar o especificador "N" com a Guid.ToString(String)sobrecarga.

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

Por padrão, as letras são minúsculas. Um Guid apenas com letras maiúsculas só pode ser obtido convertendo-os manualmente em maiúsculas, por exemplo:

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

Um guid apenas com letras ou dígitos não faz sentido. Uma representação de string guid é hexadecimal e, portanto, sempre (bem mais provavelmente) conterá ambos.

Christian.K
fonte
é possível criar um GUID com caracteres maiúsculos e minúsculos junto com números ???
Harish Kumar
7
@HarishKumar Isso não faz sentido. A string GUID é um número hexadecimal. Nessa notação, 'a' é o mesmo que 'A'. Embora por causa disso você possa imprimir todas as letras da caixa que quiser (mas eu realmente não vejo sentido nisso).
Christian.K
mas o que eu gostaria de ter é uma string guid, que é uma mistura de minúsculas, maiúsculas e números ... posso conseguir esse tipo de ??
Harish Kumar
7
@HarishKumar Como você decidir quais letras devem ser maiúsculas e quais devem ser minúsculas? É claro que você é livre para usar string.Replace(char, char)para conseguir isso, mas na verdade é inútil e desnecessário. Considere postar uma nova pergunta e tente perguntar o que você realmente deseja alcançar - parece ser mais do que apenas se livrar de hifens em strings GUID.
Christian.K
0
Guid.NewGuid().ToString().Replace("-", string.Empty)
Bonshington
fonte
20
Embora isso vá fazer o trabalho, se nada mais, é um trabalho extra (e muito provavelmente uma alocação de string desnecessária).
Christian.K