C# 中將字串轉換為轉義字串字面量
在 C# 中,如何將字串值轉換為帶有轉義序列的字串字面量,例如製表符和換行符?
假設我們有以下程式碼:
<code class="language-c#">Console.WriteLine(someString);</code>
輸出結果為:
<code>Hello World!</code>
我們希望建立一個 ToLiteral
方法,該方法接受一個字串參數並產生以下輸出:
<code>\tHello\r\n\tWorld!\r\n</code>
解:
方法一:使用 Roslyn 的 CodeDomProvider
過去,解決方案涉及使用 System.CodeDom.Compiler
命名空間中的 CodeDomProvider
,如下面的程式碼所示:
<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>
方法二:使用 Roslyn 的 Microsoft.CodeAnalysis.CSharp 套件
最近,Graham High 發現我們可以利用 Roslyn 的 Microsoft.CodeAnalysis.CSharp NuGet 套件更有效地實現相同的結果:
<code class="language-c#">private static string ToLiteral(string valueTextForCompiler) { return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false); }</code>
此方法直接使用Roslyn函式庫提供的函數,更加簡潔有效率。
以上是如何將 C# 字串轉換為轉義字串文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!