c# - 我可以将 C# 字符串值转换为转义字符串文字吗?

标签 c# string escaping

在 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/

相关文章:

c# - 在 Oracle 的 BLOB 字段中保存和检索图像?

JavaScript:循环遍历字符串,如果字符串第一个字母包含元音,则返回字符串 + 'ay'

c - 在没有指针的情况下返回 C 中的字符串?

c - 使用转义键进行字符串操作

linux - 如何使用 sh 回显双反斜杠加上变量(版本号),如 "\\hostname\release\1.02A01"?

c# - 使用 RegisterHotKey 检测 Ctrl+V 但不拦截它

C# COM DLL 阻止 VBA 应用程序退出

c# - MySQL 查询中的输入字符串格式不正确

c - Microchip dsPIC33FJ256GP710A 来自通过 UART 进行通信的示例代码

Bash转义文件名,变量中的空格