var result1 = String.Format("Hello\n\t{0}\n\n", "Bill");
// MyResource.FormatMe contains the same text: Hello\n\t{0}\n\n
var result2 = String.Format(MyResource.FormatMe, "Bill");
result1符合预期:
"Hello
Bill
"
result2不是:
Hello\n\tBill\n\n
String.Format
当格式字符串来自资源时,为什么不转义转义字符?
String.Format
没有逃脱任何东西。它的编译器,该过程\n
,\t
并在字符串成别的东西(其它转义序列也就是说,如果你看一下二进制,通过编译器产生并搜索字符串,你不会找到文字\
字符后跟n
有,但实际字节换行符)。因此,代码中不存在任何字符串文字的内容都不会处理转义序列。
您可以轻松地对字符串进行预处理,以进行更改\n
并\t
转换为实际的换行符和制表符:
string result2_format = MyResource.FormatMe.Replace("\\n", "\n").Replace("\\t", "\t");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句