[英]“Evaluate” a c# string
我正在读取C#源文件。 当我遇到一个字符串时,我想获取它的值。
例如,在以下示例中:
public class MyClass
{
public MyClass()
{
string fileName = "C:\\Temp\\A Weird\"FileName";
}
}
我想找
C:\Temp\A Weird"FileName
有现成的程序可以做到这一点吗?
用所有可能的情况对解决方案进行编码应该非常棘手(@,转义序列...)。
我相信这种程序存在...
我也想拥有双重功能(将字符串注入C#源文件)
提前致谢。
菲利普
PS:
我给出了一个带有文件名的示例,但我正在寻找一种适用于所有字符串的解决方案。
我很确定您可以使用CodeDOM读取C#代码文件并解析其元素。 它生成一个代码树,然后您可以查找表示strings
节点。
http://www.codeproject.com/Articles/2502/C-CodeDOM-parser
其他CodeDom解析器:
http://www.codeproject.com/Articles/14383/An-Expression-Parser-for-CodeDom
NRefactory: https : //github.com/icsharpcode/NRefactory和http://www.codeproject.com/Articles/408663/Using-NRefactory-for-analyzing-Csharp-code
有一种使用正则表达式提取这些字符串的方法:
("(\\"|[^"])*")
这个特定的代码可以在您的简单示例中工作,并提供文件名(完整的带引号和结尾的引号字符); 不幸的是,它是否适用于更复杂的解决方案。
为了清楚起见, (\\\\"|[^"])
匹配除"
之外的任何字符, 除非它具有前导\\
字符。
只需使用".*"
表达式来匹配所有字符串值,然后删除尾随的反逗号并取消转义即可。
这将在字符串中包含\\"
和""
字符
因此, "C:\\\\Temp\\\\A Weird\\"FileName"
和"Hello ""World"""
都将匹配
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.