генерування GUID без дефісу


104

Я генерую GUID, використовуючи наступне твердження у своєму коді

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

Але коли генерується GUID, я виявляю, що він містить і символ дефісу. Як мені почати генерувати GUID із лише літерами (великими та малими літерами) та цифрами? Я не хочу дефісу. Може хтось дасть мені таку ідею?

Відповіді:


273

Зауважте, що ви говорите про (канонічне) рядкове подання Guid. Сам посібник насправді - це 128-бітове ціле значення.

Для Guid.ToString(String)перевантаження можна використовувати специфікатор "N" .

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

За замовчуванням букви бувають малі. Посібник із великими літерами може бути досягнутий лише шляхом ручного перетворення їх у великі регістри, наприклад:

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

Настанова з лише буквою або цифрами не має сенсу. Представлення настановних рядків є шістнадцятковим, і таким чином завжди (цілком ймовірно) міститиме обидва.


чи можна створити GUID як з верхніх, так і з малих символів разом з номерами ???
Харіш Кумар

7
@HarishKumar Це не має сенсу. Рядок GUID - це шістнадцяткове число. У цьому позначенні "a" те саме, що "A". Хоча через це ви можете надрукувати кожен лист у бажаному кожусі (але я дійсно не бачу в цьому сенсу).
Крістіан.К

але те, що я хочу мати, є настановним рядком, тобто сумішшю малих літер, верхнього регістру та цифр ... Чи можу я досягти сортування ???
Харіш Кумар

7
@HarishKumar Як би ти вирішив, які букви мають бути верхніми, а які малими? Ви, звичайно, можете користуватися string.Replace(char, char)цим, але насправді це безглуздо і непотрібно. Подумайте над тим, щоб опублікувати нове запитання і спробувати задати те, чого ви дійсно хочете досягти - це, здається, більше, ніж просто позбутися дефісів у рядках GUID.
Крістіан.К

0
Guid.NewGuid().ToString().Replace("-", string.Empty)

20
Хоча це зробить роботу, якщо нічого іншого, це зайва робота (і, швидше за все, непотрібне виділення рядків).
Крістіан.К
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.