2012-01-16 15 views
62

estoy generando un GUID utilizando la siguiente declaración en mi códigode generación GUID sin guión

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

Pero, cuando se genera un GUID, me parece que contiene el carácter de guión también. ¿Cómo hago para generar un GUID con solo letras (mayúsculas y minúsculas) y números? No quiero el guion. ¿Puede alguien darme esa idea?

Respuesta

184

Tenga en cuenta que está hablando de la representación de cadena (canónica) de un Guid. El Guid en sí es en realidad un valor entero de 128 bits.

Puede utilizar el especificador "N" con la sobrecarga Guid.ToString(String).

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

Por defecto, las letras son minúsculas. Un GUID con sólo letras mayúsculas sólo puede lograrse mediante la conversión a todos ellos de forma manual en mayúsculas, ejemplo:

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

un GUID sólo con carta o dígitos no tiene sentido. Una representación guid string es hexadecimal, y por lo tanto siempre (muy probablemente) contendrá ambos.

+0

¿es posible crear un GUID con letras mayúsculas y minúsculas junto con números? –

+5

@HarishKumar Eso no tiene sentido. La cadena GUID es un número hexadecimal. En esa notación, 'a' es lo mismo que 'A'. Aunque debido a eso puedes imprimir todas las letras de la carcasa que quieras (pero realmente no veo ningún sentido en eso). –

+0

pero lo que deseo tener es una cadena guid, que es una mezcla de minúsculas, mayúsculas y números ... ¿puedo lograr un tipo de des? –

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

Si bien esto hará el trabajo, si nada más, es un trabajo extra (y muy probablemente una asignación innecesaria de cadenas). –