所以我使用Roslyn SyntaxFactory生成C#代码。
使用IdentifierName(string)
生成变量名时,有没有办法让我能够转义变量名?
要求:
答案 0 :(得分:1)
API文档的含义似乎是它需要一个有效的C#标识符,所以Roslyn不会为你提供一个转义机制。因此,您需要定义一个字符串转换,以便达到您想要的效果。
这样做的方法是看看其他事情是如何做到的。查看HTML实体,这些实体始终使用&
引入。它们总是可以轻松区分,并且还可以对文字&
进行编码,以便您不会限制可渲染字符集。或者考虑C#字符串如何允许您通过使用\
在字符串中包含字符串分隔符和其他特殊字符。
您需要选择一个在C#标识符中有效的字符作为您的标记'表示要编码的非标识符字符之一的序列,以及允许表示该字符的方法。然后为每个编码字符的标记后面的内容制作一个映射表。如果您想要完成所有Unicode,最简单的方法可能就是使用Unicode代码点编号。生成的标识符可能不是非常易读,但在您的用例中可能并不重要。
一旦你有一个合适的系统,编写一个实现它的字符串转换函数应该非常简单。