2012-02-23 3 views
2

可能性の重複:私は、このような文字列で存在することができる任意の/すべてのエスケープシーケンスがそのまま印刷されていること(Console.WriteLineを()経由で)文字列を出力するにはどうすればよい
Can I convert a C# string value to an escaped string literalConsole.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. 

注 - すなわち私は、文字列を自分で作成していた場合、私はちょうどあなたがconveする必要があります

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

だから我々はあなたが文字に出力したいのか分から 'xD'、' xA'、 'x9'と' x5C'が、あなたが他のすべてのために何をしたいですか? C#コンパイラの解釈が必要な場合は、上記のdupeリンクを探してください。そうでなければ、より詳細な仕様が必要だと私は思います。 – AakashM

+0

@VBRonPaulFan - これが重複していることについてのヘッドアップに感謝します。あなたが与えたリンクは私が探していたものです。 – Jed

答えて

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(); 
} 
+0

Regexを使うこともできますが、基本的な原則は同じです。また\を\にする必要があります。 – Servy

+0

@downvoterは説明してくれませんか? – JaredPar

+0

@Servy 'Regex'はクイックスイッチ/ケースで行うことができる何かのためのかなり重い解決策です。注記私は逐語的な文字列を使用していたので、私のsolutinに\を書いておく必要はありません。 – JaredPar

0

を行うことができることを承知していますバイナリ文字を自分自身にエスケープしてください。やらなければならないことではありません。

+0

VBRonPaulFanは実際にあなたが望むリンクを持っているようです。 –

関連する問題