清理 roslyn 成员声明语法标识符

Sco*_*kay 4 c# roslyn

在构建语法树时,roslyn 中是否有任何现有的方法或机制来清理 memberdeclarationsynxtax 节点的标识符名称?

例如带有空格、点、破折号或使用保留字如 class、void、string 的名称

[编辑] 澄清一下,代码将被生成,所以你不知道或提前控制输入,目标是清理输入。我指的是与 Path.GetInvalidFileNameChars() 等效的语法树,您可以使用它来清理用于创建目录和文件的输入。我在问 roslyn 是否有这样的机制。

Sal*_*dor 6

在跟进接受的答案时,我在 SyntaxFacts 上发现了一些可以在这里使用的其他方法。

GetKeywordKind(string)返回一个SyntaxKind代表关键字,或者SyntaxKind.None如果传递的字符串不是 C# 关键字。GetContextualKeywordKind(string)对上下文关键字做同样的事情。这应该可以轻松执行以下操作:

string identifier = "double";
bool isAnyKeyword = SyntaxFacts.GetKeywordKind(identifier) != SyntaxKind.None
                 || SyntaxFacts.GetContextualKeywordKind(identifier) != SyntaxKind.None;
Run Code Online (Sandbox Code Playgroud)