“评估”一个c#字符串

时间:2013-09-12 10:17:29

标签: c#

我正在阅读一个C#源文件。 当我遇到一个字符串时,我想得到它的价值 例如,在以下示例中:

public class MyClass
{
  public MyClass()
  {
    string fileName = "C:\\Temp\\A Weird\"FileName";
  }
}  

我想检索

C:\Temp\A Weird"FileName

是否有现成的程序?
编写一个包含所有可能情况的解决方案应该非常棘手(@,转义序列.......) 我确信这样的程序存在...
我也想拥有双重功能(将字符串注入C#源文件)

提前致谢。
菲利普

P.S:
我给出了一个带文件名的例子,但是我找到了适用于各种字符串的解决方案。

3 个答案:

答案 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/NRefactoryhttp://www.codeproject.com/Articles/408663/Using-NRefactory-for-analyzing-Csharp-code

答案 1 :(得分:1)

有一种方法可以使用正则表达式提取这些字符串:

  ("(\\"|[^"])*")

这个特殊的例子适用于您的简单示例并提供文件名(包含前导和尾随引号字符);不管它是否会对更复杂的问题起作用我不能轻易说出来。

为清楚起见,(\\"|[^"])匹配"之外的任何字符,除之外的,其中有\个字符。

答案 2 :(得分:0)

只需使用".*" Regex匹配所有字符串值,然后删除尾随引号并忽略它。

这将允许字符串中的\"""字符

因此"C:\\Temp\\A Weird\"FileName""Hello ""World"""都匹配