Generieren einer GUID ohne Bindestrich

104

Ich generiere eine GUID mit der folgenden Anweisung in meinem Code

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

Wenn eine GUID generiert wird, enthält sie auch den Bindestrich. Wie gehe ich vor, um eine GUID nur mit Buchstaben (Groß- und Kleinbuchstaben) und Zahlen zu generieren? Ich will den Bindestrich nicht. Kann mir jemand so eine Idee geben?

Harish Kumar
quelle

Antworten:

273

Beachten Sie, dass Sie über die (kanonische) Zeichenfolgendarstellung eines Guid sprechen. Der Guid selbst ist eigentlich ein 128-Bit-Integer-Wert.

Sie können den "N" -Spezifizierer mit der Guid.ToString(String)Überladung verwenden.

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

Standardmäßig werden Buchstaben in Kleinbuchstaben geschrieben. Eine Guid mit nur Großbuchstaben kann nur erreicht werden, indem alle manuell in Großbuchstaben konvertiert werden. Beispiel:

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

Eine Anleitung mit nur Buchstaben oder Ziffern macht keinen Sinn. Eine Guid-String-Darstellung ist hexadezimal und enthält daher immer (höchstwahrscheinlich) beide.

Christian.K
quelle
Ist es möglich, eine GUID mit Groß- und Kleinbuchstaben sowie Zahlen zu erstellen?
Harish Kumar
7
@ HarishKumar Das macht keinen Sinn. Die GUID-Zeichenfolge ist eine Hexadezimalzahl. In dieser Notation ist 'a' dasselbe wie 'A'. Aus diesem Grund können Sie jeden Buchstaben in das gewünschte Gehäuse drucken (aber ich sehe darin wirklich keinen Sinn).
Christian.K
aber was ich haben möchte, ist eine Guid-Zeichenfolge, die eine Mischung aus Kleinbuchstaben, Großbuchstaben und Zahlen ist ... kann ich eine Dis-Sortierung erreichen?
Harish Kumar
7
@ HarishKumar Wie würden Sie entscheiden, welche Buchstaben groß und welche klein geschrieben werden sollen? Es steht Ihnen natürlich frei, dies string.Replace(char, char)zu erreichen, aber es ist wirklich sinnlos und unnötig. Stellen Sie eine neue Frage und versuchen Sie zu fragen, was Sie wirklich erreichen möchten - es scheint mehr zu sein, als nur Bindestriche in GUID-Zeichenfolgen zu entfernen.
Christian.K
0
Guid.NewGuid().ToString().Replace("-", string.Empty)
Bonshington
quelle
20
Während dies die Arbeit erledigt, ist es nicht zuletzt zusätzliche Arbeit (und höchstwahrscheinlich eine unnötige Zeichenfolgenzuweisung).
Christian.K