Вход: uint hex = 0xdeadbeef;
Требуемый вывод: string result = "{deadbeef}"
Первый подход: явно добавьте {
и }
; это работает:
result = "{" + string.Format("{0:x}", hex) + "}"; // -> "{deadbeef}"
Вывод как десятичный, а не шестнадцатеричный с использованием экранированных фигурных скобок:
result = string.Format("{{{0}}}", hex); // -> "{3735928559}"
Кажется многообещающим, теперь все, что нам нужно сделать, это добавить спецификатор hex :x
в соответствии с первым подходом выше:
result = string.Format("{{{0:x}}}", hex); // -> "{x}"
О, дорогая, добавив ':x
, он сделал вывод "{x}"
, а не "{deadbeef}"
, который я хотел.
Итак, мой вопрос: должен ли я решить это, явно добавив {
и }
в соответствии с первым примером, или есть способ сделать это, используя сложное форматирование и избегая фигурных скобок?
Также обратите внимание, что это также влияет на интерполяцию строк, которая (в конце концов) просто преобразуется компилятором в вызов string.Format()
.
(Возможно, это повторяющийся вопрос, но до сих пор мне не удалось найти дубликат...)
отредактированный