Мне нужно отформатировать мои GUID в пунктирном формате, все в верхнем регистре. Я знаю, что использование myGuid.ToString("D")
или String.Format("{0:D}", myGuid)
дает пунктирный формат, но использование прописной буквы D
в отличие от нижнего регистра D
не дает мне идентификатор GUID с верхним регистром, как я думал. Есть ли способ сделать это, не делая ничего сумасшедшего, или мне просто нужно позвонить myGuid.ToString().ToUpper()
?
Формат строчной строки .NET GUID
Ответ 1
Мне просто нужно позвонить
myGuid.ToString().ToUpper()
Угу. Вы могли бы приложить усилия к созданию пользовательского IFormatProvider, но, похоже, это не стоит здесь.
Ответ 2
Обратите внимание, что RFC 4122, который определяет спецификацию UUID, предусматривает, что шестнадцатеричные символы вывода должны быть в нижнем регистре при преобразовании структуры в строку:
The hexadecimal values "a" through "f" are output as
lower case characters and are case insensitive on input.
Это может объяснить, почему структура Guid не поддерживает вывод напрямую в виде строки в верхнем регистре.
Поскольку параметр поставщика формата ToString игнорируется, единственная альтернатива (без простого преобразования строки в верхний регистр) будет заключаться в том, чтобы непосредственно манипулировать байтами, сохраняя при этом сохранение контентоспособности. Простое преобразование в верхний регистр (прямо или через метод расширения), вероятно, гораздо более прямолинейно.
Ответ 3
Я не думаю, что у вас есть другой выбор, чем просто сделать myGuid.ToString().ToUpper()
. Хотя, вы всегда можете написать метод расширения, возможно, что-то вроде ToUpperString
, но я не думаю, что в систему что-то встроено.
Ответ 4
Предполагая, что у вас есть класс, в котором содержится ваш Guid, и вы хотели бы сохранить типизированный Guid, вы могли бы сделать что-то вроде этого:
public Guid Identifier { get; set; }
public String FormattedIdentifier => Identifier.ToString().ToUpper();