如何强制Console.WriteLine()打印逐字字符串?

时间:2012-02-23 17:58:14

标签: c# escaping string-formatting console.writeline verbatim

  

可能重复:
  Can I convert a C# string value to an escaped string literal

如何打印字符串(通过Console.WriteLine()),以便逐字打印字符串中可能存在的所有/所有转义序列?

示例:

string s = "This \r\n has \t special \\ characters.";
Console.WriteLine(s);

/* Output (I don't want this)

This 
 has    special \ characters.

*/

我想要输出:

This \r\n has \t special \\ characters.

请注意,在我的应用程序中,我收到来自第三方的字符串(包含转义序列) - 即如果我自己创建字符串,我知道我可以做

string s = @"This \r\n has \t special \\ characters.";

2 个答案:

答案 0 :(得分:4)

执行此操作的唯一方法是自己解码转义序列,并将它们作为文字条目放回字符串中。这需要某种转换功能。例如

string EscapeIt(string value) {
  var builder = new StringBuilder();
  foreach (var cur in value) {
    switch (cur) {
      case '\t': 
        builder.Append(@"\t");
        break;
      case '\r': 
        builder.Append(@"\r");
        break;
      case '\n':
        builder.Append(@"\n");
        break;
      // etc ...
      default:
        builder.Append(cur);
        break;
    }
  }
  return builder.ToString();
}

答案 1 :(得分:0)

您必须自己将二进制字符转换为转义符。应该不难做到。