有人能解释一下为什么这个不行吗:
string f = string.Format("\\x{0:00}{{0}}", 5);
string o = string.Format(f, "INSERT TEXT");
System.Diagnostics.Debug.WriteLine(f + " : " + o);
输出结果如下:
\x05{0} : \x05INSERT TEXT
为什么\x05没有被替换?
有人能解释一下为什么这个不行吗:
string f = string.Format("\\x{0:00}{{0}}", 5);
string o = string.Format(f, "INSERT TEXT");
System.Diagnostics.Debug.WriteLine(f + " : " + o);
输出结果如下:
\x05{0} : \x05INSERT TEXT
参数的格式应该在格式说明符中设置,否则你只是插入了一个字面的 "\x"。像这样:
// "5" as a lowercase 2-digit hex
string f = string.Format("{0:x2}{{0}}", 5);
不要混淆在源代码中表示十六进制字面量和在格式化字符串中打印的内容,它们是不同的东西。
如果要在字符串中放置一个字符,请确保编译器知道这是一个字符。
string f = string.Format("{0}", (char)5);
string g = string.Format("{0}", Convert.ToChar(5));
string h = string.Format("{0}", char.ConvertFromUtf32(5));
或者你可以从一个真正的字符开始:
string i = string.Format("{0}", '\x05');
string j = string.Format("{0}", '\u0005');
string k = string.Format("{0}", '\U00000005');
这是你需要的吗?
int x = 5;
string f = string.Format("\\x{0:x2}{1}", x, "INSERT TEXT");
Console.WriteLine(f);