génération d'un GUID sans tiret

104

Je génère un GUID en utilisant l'instruction suivante dans mon code

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

Mais, lorsqu'un GUID est généré, je trouve qu'il contient également le caractère trait d'union. Comment générer un GUID avec uniquement des lettres (majuscules et minuscules) et des chiffres? Je ne veux pas du trait d'union. Quelqu'un peut-il me donner une telle idée?

Harish Kumar
la source

Réponses:

273

Notez que vous parlez de la représentation sous forme de chaîne (canonique) d'un Guid. Le Guid lui-même est en fait une valeur entière de 128 bits.

Vous pouvez utiliser le spécificateur "N" avec la Guid.ToString(String)surcharge.

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

Par défaut, les lettres sont en minuscules. Un Guid avec uniquement des lettres majuscules ne peut être obtenu qu'en les convertissant manuellement tous en majuscules, exemple:

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

Un guid avec seulement une lettre ou des chiffres n'a aucun sens. Une représentation sous forme de chaîne guid est hexadécimale, et contiendra donc toujours (très probablement) les deux.

Christian.K
la source
est-il possible de créer un GUID avec des caractères majuscules et minuscules ainsi que des nombres ???
Harish Kumar
7
@HarishKumar Cela n'a aucun sens. La chaîne GUID est un nombre hexadécimal. Dans cette notation, «a» équivaut à «A». Bien qu'à cause de cela, vous pouvez imprimer chaque lettre dans le boîtier que vous voulez (mais je ne vois vraiment aucun intérêt à cela).
Christian.K
mais ce que je souhaite avoir, c'est une chaîne de caractères guid, qui est un mélange de minuscules, de majuscules et de nombres ... puis-je obtenir un tri ???
Harish Kumar
7
@HarishKumar Comment décideriez-vous quelles lettres doivent être en majuscules et lesquelles doivent être en minuscules? Vous êtes bien sûr libre d'utiliser string.Replace(char, char)pour y parvenir, mais c'est vraiment inutile et inutile. Envisagez de publier une nouvelle question et essayez de demander ce que vous voulez vraiment accomplir - cela semble être plus que simplement se débarrasser des traits d'union dans les chaînes GUID.
Christian.K
0
Guid.NewGuid().ToString().Replace("-", string.Empty)
Bonshington
la source
20
Bien que cela fasse le travail, à tout le moins, c'est un travail supplémentaire (et très probablement une allocation de chaîne inutile).
Christian.K