Вход: 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().
(Возможно, это повторяющийся вопрос, но до сих пор мне не удалось найти дубликат...)
отредактированный