输入: uint hex = 0xdeadbeef;
所需输出: string result = "{deadbeef}"
第一种方法: 显式地添加{
和}
; 这种方法可行:
result = "{" + string.Format("{0:x}", hex) + "}"; // -> "{deadbeef}"
使用转义的花括号将输出转换为十进制而不是十六进制:
result = string.Format("{{{0}}}", hex); // -> "{3735928559}"
看起来很有前途,现在我们只需要按照上述第一种方法添加:x
十六进制规范即可:
result = string.Format("{{{0:x}}}", hex); // -> "{x}"
哎呀,加上':x
后它输出的是"{x}"
而不是我想要的"{deadbeef}"
。
所以我的问题是:我是否必须像第一个示例那样显式添加{
和}
,或者有没有一种使用复合格式和转义花括号来解决它的方法?
还请注意,这也会影响字符串插值,因为(毕竟)它只是由编译器转换成对string.Format()
的调用。
(这可能是重复的问题,但我迄今为止找不到重复的问题……)
编辑过
string.Format
中的一个错误。 - Lasse V. Karlsen"{{{0}}}"
也不应该工作,因为0}
不是一个有效的参数索引,但是既然它能够工作,那么就不一致了。 - Lasse V. Karlsen{{{0:N}}}
打印{N}
). - CodeCaster