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!