Вход:uint hex = 0xdeadbeef;
Как использовать string.Format() для форматирования шестнадцатеричного числа, окруженного фигурными скобками?
Требуемая мощность:string result = "{deadbeef}"
Первый подход: Явное добавить {
и }
; это работает:
result = "{" + string.Format("{0:x}", hex) + "}"; // -> "{deadbeef}"
Вывод в десятичной, а не гекс с использованием спасся фигурные скобки:
result = string.Format("{{{0}}}", hex); // -> "{3735928559}"
Кажется перспективным, теперь все, что нам нужно сделать, это добавить :x
шестигранную specifer в соответствии с первым подходом выше:
result = string.Format("{{{0:x}}}", hex); // -> "{x}"
Ах, добавив ':x
сделал выход "{x}"
, а не "{deadbeef}"
, что я хотел.
Так что мой вопрос: должен ли я решить это, явно добавив {
и }
в соответствии с первым примером, или есть способ сделать это, используя сложное форматирование и избегая фигурных скобок?
Также обратите внимание, что это также влияет на интерполяцию строк, которая (в конце концов) просто преобразуется компилятором в вызов string.Format()
.
(Это может быть дубликатом вопрос, но я не смог найти дубликата до сих пор ...)
отредактировал
См "Экранирование брекеты" в https://msdn.microsoft.com/en-us/library/txafckwd(v=vs. 110) .aspx - в основном ваше решение - это решение. –
Это похоже на ошибку в 'string.Format'. –
@HansKesting Эта статья на самом деле является ответом на этот вопрос. Если вы опубликуете его в качестве ответа, я буду отмечать его как правильное. –