ホームページ > バックエンド開発 > C++ > C#文字列を逃げた文字列リテラルに変換する方法は?

C#文字列を逃げた文字列リテラルに変換する方法は?

Barbara Streisand
リリース: 2025-01-28 00:46:10
オリジナル
517 人が閲覧しました

C# 文字列をエスケープ文字列リテラルに変換します

How to Convert C# Strings to Escaped String Literals?

質問:

C# の文字列値を、タブや改行などのエスケープ シーケンスを含む文字列リテラルに変換することはできますか?たとえば、タブ文字と改行文字を含む文字列を、エスケープ シーケンス「t」と「rn」を含む文字列に変換します。

答え:

伝統的な方法:

1 つの方法が長い間使用されてきました。

<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!";</code>
ログイン後にコピー

出力結果は次のとおりです:

<code>"\tHello\r\n\tWorld!"</code>
ログイン後にコピー
ログイン後にコピー

Roslyn を使用する代わりに:

新しい方法には、NuGet の 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">var input = "\tHello\r\n\tWorld!";
Console.WriteLine(ToLiteral(input));</code>
ログイン後にコピー

出力結果は次のとおりです:

<code>"\tHello\r\n\tWorld!"</code>
ログイン後にコピー
ログイン後にコピー

以上がC#文字列を逃げた文字列リテラルに変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート