我正在阅读一个C#源文件。 当我遇到一个字符串时,我想得到它的价值 例如,在以下示例中:
public class MyClass
{
public MyClass()
{
string fileName = "C:\\Temp\\A Weird\"FileName";
}
}
我想检索
C:\Temp\A Weird"FileName
是否有现成的程序?
编写一个包含所有可能情况的解决方案应该非常棘手(@,转义序列.......)
我确信这样的程序存在...
我也想拥有双重功能(将字符串注入C#源文件)
提前致谢。
菲利普
P.S:
我给出了一个带文件名的例子,但是我找到了适用于各种字符串的解决方案。
答案 0 :(得分:2)
我很确定你可以使用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
答案 1 :(得分:1)
有一种方法可以使用正则表达式提取这些字符串:
("(\\"|[^"])*")
这个特殊的例子适用于您的简单示例并提供文件名(包含前导和尾随引号字符);不管它是否会对更复杂的问题起作用我不能轻易说出来。
为清楚起见,(\\"|[^"])
匹配"
之外的任何字符,除之外的,其中有\
个字符。
答案 2 :(得分:0)
只需使用".*"
Regex匹配所有字符串值,然后删除尾随引号并忽略它。
这将允许字符串中的\"
和""
字符
因此"C:\\Temp\\A Weird\"FileName"
和"Hello ""World"""
都匹配