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

Jed*_*Jed 4 c# escaping string-formatting console.writeline verbatim

可能的重复:
我可以将 C# 字符串值转换为转义的字符串文字吗

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

例子:

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

/* Output (I don't want this)

This 
 has    special \ characters.

*/
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

This \r\n has \t special \\ characters.
Run Code Online (Sandbox Code Playgroud)

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

string s = @"This \r\n has \t special \\ characters.";
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 5

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

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();
}
Run Code Online (Sandbox Code Playgroud)

  • @KyleW 这不是投反对票的理由。我的回答是在评论之前添加的。如果您认为该问题有误,请投反对票。答案不应被否决,除非它们不正确。 (2认同)