4

重複の可能性:
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.

*/

出力に次のように表示させます。

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

私のアプリケーションでは、サードパーティから文字列(エスケープシーケンスを含む)を受け取っていることに注意してください。つまり、自分で文字列を作成している場合は、

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

1 に答える 1

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();
}
于 2012-02-23T18:01:51.323 に答える