Heim >Backend-Entwicklung >C++ >Wie kann ich einen C#-String in ein Escape-String-Literal konvertieren?

Wie kann ich einen C#-String in ein Escape-String-Literal konvertieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-28 00:42:08859Durchsuche

How Can I Convert a C# String to an Escaped String Literal?

Konvertieren Sie einen String in ein Escape-String-Literal in C#

Wie konvertiert man in C# einen String-Wert in ein String-Literal mit Escape-Sequenzen wie Tab und Newline?

Angenommen, wir haben den folgenden Code:

<code class="language-c#">Console.WriteLine(someString);</code>

Das Ausgabeergebnis ist:

<code>Hello
World!</code>

Wir möchten eine ToLiteral-Methode erstellen, die ein String-Argument akzeptiert und die folgende Ausgabe erzeugt:

<code>\tHello\r\n\tWorld!\r\n</code>

Lösung:

Methode 1: Verwenden Sie Roslyns CodeDomProvider

In der Vergangenheit umfassten Lösungen die Verwendung von System.CodeDom.Compiler im CodeDomProvider-Namespace, wie im folgenden Code gezeigt:

<code class="language-c#">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>

Methode 2: Verwenden Sie Roslyns Microsoft.CodeAnalysis.CSharp-Paket

Kürzlich hat Graham High herausgefunden, dass wir mit Roslyns NuGet-Paket Microsoft.CodeAnalysis.CSharp die gleichen Ergebnisse effizienter erzielen können:

<code class="language-c#">private static string ToLiteral(string valueTextForCompiler)
{
    return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false);
}</code>

Diese Methode nutzt direkt die von der Roslyn-Bibliothek bereitgestellten Funktionen, was präziser und effizienter ist.

Das obige ist der detaillierte Inhalt vonWie kann ich einen C#-String in ein Escape-String-Literal konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn