.NET GUID формат строки в верхнем регистре - PullRequest
12 голосов
/ 29 июля 2011

Мне нужно отформатировать GUID в виде пунктирной строки, все в верхнем регистре.Я знаю, что использование myGuid.ToString("D") или String.Format("{0:D}", myGuid) дает пунктирный формат, но использование прописных букв D в отличие от строчных d не дает мне прописные GUID, как я думалЕсть ли способ сделать это, не делая ничего сумасшедшего, или мне просто нужно позвонить myGuid.ToString().ToUpper()?

Ответы [ 4 ]

15 голосов
/ 29 июля 2011

Обратите внимание, что RFC 4122 , который определяет спецификацию UUID, предусматривает, что выходные шестнадцатеричные символы должны быть в нижнем регистре при преобразовании структуры в строку:

  The hexadecimal values "a" through "f" are output as
  lower case characters and are case insensitive on input.

Это может объяснить, почемуструктура Guid не поддерживает вывод непосредственно в виде строки в верхнем регистре.

Поскольку параметр поставщика формата ToString игнорируется, единственной альтернативой (без простого преобразования строки в верхний регистр) будет непосредственное манипулирование байтами во время принятиязаботиться о сохранении порядка байтов.Простое преобразование в верхний регистр (либо напрямую, либо через метод расширения), вероятно, гораздо проще.

12 голосов
/ 29 июля 2011

мне просто нужно позвонить myGuid.ToString().ToUpper()

Да. Вы могли бы приложить усилия для создания пользовательского IFormatProvider, но, похоже, оно того не стоит.

1 голос
/ 29 июля 2011

Не думаю, что у вас есть другой выбор, кроме как сделать myGuid.ToString().ToUpper().Хотя вы всегда можете написать метод расширения, возможно, что-то вроде ToUpperString, но я не думаю, что что-то встроено в систему.

0 голосов
/ 22 марта 2013

Предполагая, что у вас есть класс, содержащий ваш Guid, и вы хотите сохранить напечатанный Guid, вы можете сделать что-то вроде этого:

public Guid Identifier { get; set; }

public String FormattedIdentifier => Identifier.ToString().ToUpper();
...