質問:
C# の文字列値を、タブや改行などのエスケープ シーケンスを含む文字列リテラルに変換することはできますか?たとえば、タブ文字と改行文字を含む文字列を、エスケープ シーケンス「t」と「rn」を含む文字列に変換します。
答え:
伝統的な方法:
1 つの方法が長い間使用されてきました。
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(); } } }
このメソッドを使用すると、次のような文字列を変換できます:
var input = "\tHello\r\n\tWorld!";
出力結果は次のとおりです:
<code>"\tHello\r\n\tWorld!"</code>
Roslyn を使用する代わりに:
新しい方法には、NuGet の Microsoft.CodeAnalysis.CSharp パッケージが含まれます。更新されたコードは次のとおりです:
private static string ToLiteral(string valueTextForCompiler) { return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false); }
このメソッドを使用すると、文字列を次のように変換して、前のメソッドと同じ結果を得ることができます:
var input = "\tHello\r\n\tWorld!"; Console.WriteLine(ToLiteral(input));
出力結果は次のとおりです:
<code>"\tHello\r\n\tWorld!"</code>
以上がC#文字列を逃げた文字列リテラルに変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。