問題:
能否將C#字串值轉換為包含轉義序列的字串字面量,例如製表符和換行符?例如,將包含製表符和換行符的字串轉換為包含轉義序列“t”和“rn”的字串?
解答:
傳統方法:
長期以來一直使用一種方法:
<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中文網其他相關文章!