问题:
能否将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中文网其他相关文章!