Can I convert a C# string value to an escaped string literal

后端 未结 16 845
时光取名叫无心
时光取名叫无心 2020-11-22 07:51

In C#, can I convert a string value to a string literal, the way I would see it in code? I would like to replace tabs, newlines, etc. with their escape sequences.

If

16条回答
  •  情话喂你
    2020-11-22 08:13

    My attempt at adding ToVerbatim to Hallgrim's accepted answer above:

    private static string ToLiteral(string input)
    {
        using (var writer = new StringWriter())
        {
            using (var provider = CodeDomProvider.CreateProvider("CSharp"))
            {
                provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, new CodeGeneratorOptions { IndentString = "\t" });
                var literal = writer.ToString();
                literal = literal.Replace(string.Format("\" +{0}\t\"", Environment.NewLine), "");           
                return literal;
            }
        }
    }
    
    private static string ToVerbatim( string input )
    {
        string literal = ToLiteral( input );
        string verbatim = "@" + literal.Replace( @"\r\n", Environment.NewLine );
        return verbatim;
    }
    

提交回复
热议问题