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
Freigeben: 2025-01-28 00:42:08
Original
838 Leute haben es durchsucht

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>
Nach dem Login kopieren

Das Ausgabeergebnis ist:

<code>Hello
World!</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage