C# のエスケープ シーケンスを使用して文字列値を文字列リテラルに変換します
C# では、次の手法を使用して、エスケープ シーケンスを使用して文字列値を文字列リテラルに変換できます。
元のコード:
<code class="language-csharp">Console.WriteLine(someString);</code>
期待される出力:
<code>\tHello\r\n\tWorld!\r\n</code>
方法 1: C# StringWriter と CodeDomProvider を使用する
<code class="language-csharp">private static string ToLiteral(string input) { using (var writer = new StringWriter()) { using (var provider = CodeDomProvider.CreateProvider("CSharp")) { provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null); return writer.ToString(); } } }</code>
例:
<code class="language-csharp">var input = "\tHello\r\n\tWorld!"; Console.WriteLine(input); Console.WriteLine(ToLiteral(input));</code>
出力:
<code> Hello World! "\tHello\r\n\tWorld!"</code>
方法 2: Roslyn の Microsoft.CodeAnalysis.CSharp パッケージを使用する
<code class="language-csharp">private static string ToLiteral(string valueTextForCompiler) { return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false); }</code>
例:
<code class="language-csharp">Console.WriteLine(ToLiteral("\tHello\r\n\tWorld!"));</code>
出力:
<code>"\tHello\r\n\tWorld!"</code>
以上がC#で文字列リテラルをエスケープするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。