【问题标题】:Convert a C# string value to an escaped string literal with Roslyn使用 Roslyn 将 C# 字符串值转换为转义字符串文字
【发布时间】:2021-04-27 05:58:03
【问题描述】:

@Hallgrim 发现 here 有这样的 CodeDom 方法:

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();
        }
    }
}

如今,我们需要为 .NET Core 重新制作 Roslyn。还是我们应该手动替换符号?

【问题讨论】:

  • 类似这样的东西:SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(input)).ToFullString();?
  • @GeorgeAlexandria,它有效。请张贴作为答案。

标签: c# string roslyn literals converters


【解决方案1】:

您可以从输入字符串创建SyntaxNode (LiteralExpressionSyntax),然后获取创建节点的字符串表示:

public static string ToLiteral(this string input)
{
    return SyntaxFactory.LiteralExpression(SyntaxKind.StringLiteralExpression, SyntaxFactory.Literal(input)).ToFullString();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多