[英]“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/NRefactory和http://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.