谁能解释为什么这不起作用:
string f = string.Format("\\x{0:00}{{0}}", 5);
string o = string.Format(f, "INSERT TEXT");
System.Diagnostics.Debug.WriteLine(f + " : " + o);
Run Code Online (Sandbox Code Playgroud)
输出是:
\x05{0} : \x05INSERT TEXT
Run Code Online (Sandbox Code Playgroud)
为什么\ x05没有被替换?
Jef*_*ado 10
参数的格式应该在格式说明符中设置,否则你只是插入一个文字"\ x".像这样:
// "5" as a lowercase 2-digit hex
string f = string.Format("{0:x2}{{0}}", 5);
Run Code Online (Sandbox Code Playgroud)
不要混淆如何在源代码中表示十六进制文字与在格式化字符串中打印的内容,它们是不同的东西.
要将字符串放在字符串中,只需确保编译器知道它是一个字符.
string f = string.Format("{0}", (char)5);
string g = string.Format("{0}", Convert.ToChar(5));
string h = string.Format("{0}", char.ConvertFromUtf32(5));
Run Code Online (Sandbox Code Playgroud)
或者你可以从一个真正的char开始:
string i = string.Format("{0}", '\x05');
string j = string.Format("{0}", '\u0005');
string k = string.Format("{0}", '\U00000005');
Run Code Online (Sandbox Code Playgroud)
随便挑选.