Heim >Backend-Entwicklung >C++ >Wie konvertiere ich C#-Strings in Escaped-String-Literale?
Frage:
Ist es möglich, einen C#-Stringwert in ein Stringliteral zu konvertieren, das Escape-Sequenzen wie Tab und Newline enthält? Konvertieren Sie beispielsweise eine Zeichenfolge mit Tabulator- und Zeilenumbruchzeichen in eine Zeichenfolge mit den Escape-Sequenzen „t“ und „rn“?
Antwort:
Traditionelle Methode:
Eine Methode wird seit langem verwendet:
<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>
Mit dieser Methode können Sie eine Zeichenfolge wie folgt konvertieren:
<code class="language-csharp">var input = "\tHello\r\n\tWorld!";</code>
Das Ausgabeergebnis ist:
<code>"\tHello\r\n\tWorld!"</code>
Alternative zur Verwendung von Roslyn:
Neuere Methode beinhaltet das Microsoft.CodeAnalysis.CSharp-Paket von NuGet. Hier ist der aktualisierte Code:
<code class="language-csharp">private static string ToLiteral(string valueTextForCompiler) { return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false); }</code>
Mit dieser Methode können Sie das gleiche Ergebnis wie mit der vorherigen Methode erzielen, indem Sie die Zeichenfolge wie folgt konvertieren:
<code class="language-csharp">var input = "\tHello\r\n\tWorld!"; Console.WriteLine(ToLiteral(input));</code>
Das Ausgabeergebnis ist:
<code>"\tHello\r\n\tWorld!"</code>
Das obige ist der detaillierte Inhalt vonWie konvertiere ich C#-Strings in Escaped-String-Literale?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!