Преобразовать строковое значение C # в экранированный строковый литерал с Roslyn - PullRequest
0 голосов
/ 04 апреля 2019

Существует такой метод для CodeDom: @ Hallgrim найдено здесь :

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

В настоящее время нам нужен римейк Roslyn для .NET Core. Или мы должны вручную заменить символы?

1 Ответ

2 голосов
/ 22 апреля 2019

Вы можете создать SyntaxNode (LiteralExpressionSyntax) из входной строки и затем взять строковое представление созданного узла:

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