簡體   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