繁体   English   中英

“评估” ac#字符串

[英]“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/NRefactoryhttp://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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM