一尘不染

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

c#

在C#中,是否可以将字符串值转换为字符串文字,就像在代码中看到字符串一样?我想将制表符,换行符等替换为其转义序列。

如果此代码:

Console.WriteLine(someString);

产生:

Hello
World!

我想要这段代码:

Console.WriteLine(ToLiteral(someString));

生产:

\tHello\r\n\tWorld!\r\n

阅读 253

收藏
2020-05-19

共1个答案

一尘不染

我找到了这个:

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!"
2020-05-19