"Evaluate" C# 字符串

  • 本文关键字:字符串 Evaluate c#
  • 更新时间 :
  • 英文 :


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

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

我想检索

C:TempA Weird"FileName

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

提前谢谢。
菲 利 普

附言:
我给出了一个带有文件名的示例,但我正在寻找适用于各种字符串的解决方案。

我很确定您可以使用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"""都会匹配

最新更新