在 C# 中,我能否将字符串值转换为字符串文字,就像我在代码中看到的那样?我想用转义序列替换制表符、换行符等。
如果这段代码:
Console.WriteLine(someString);
产生:
Hello
World!
我想要这段代码:
Console.WriteLine(ToLiteral(someString));
生产:
\tHello\r\n\tWorld!\r\n
最佳答案
很久以前,我发现了这个:
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();
}
}
}
这段代码:
var input = "\tHello\r\n\tWorld!";
Console.WriteLine(input);
Console.WriteLine(ToLiteral(input));
产生:
Hello
World!
"\tHello\r\n\tWorld!"
这些天,Graham发现您可以在 NuGet 上使用 Roslyn 的 Microsoft.CodeAnalysis.CSharp 包:
private static string ToLiteral(string valueTextForCompiler)
{
return Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(valueTextForCompiler, false);
}
关于c# - 我可以将 C# 字符串值转换为转义字符串文字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/323640/