2010-09-20 79 views
2

是否有可能以某種方式在結果中執行RegEx替換計算? (在VS2010)RegEx替換計算?

如:

Grid\.Row\=\"{[0-9]+}\" 

Grid.Row="eval(int(\1) + 1)" 

回答

0

你總是可以使用捕捉來獲取你需要爲你計算的任何值,然後執行一個正則表達式用新的正則表達式替換這是從你構建的公式和你捕獲的任何值。

如果公式不使用輸入文本中的任何內容,則一個RegEx就足夠了。您只需通過將靜態部分與計算出的值連接在一起來構造它。

1

您可以使用MatchEvaluator就實現這一目標,像

String s = Regex.Replace("1239", @"\d", m => (Int32.Parse(m.ToString()) + 1).ToString()); 

Output: 23410 

編輯: 我只注意到...如果你的意思是「使用VS2010找到替換功能」,而不是「使用C#」 ,那恐怕答案是「不」。

0

不幸的是,C#和.NET不提供eval方法或等效方法。但是,可以使用庫來進行表達式解析(一個快速谷歌給了我這個.NET Math Expression Parser)或者編寫你自己的(這實際上很容易,請檢查Shunting-yard AlgorithmPostfix Notation)。只需捕獲該組,然後將組值輸出到您編寫的庫/方法。


編輯:我看現在你想這對於VS2010 程序。除非你編寫自己的VS擴展,否則這是無法實現的。你總是可以編寫一個程序來搜索和替換你的代碼,並將代碼提供給它,然後用它的輸出替換原代碼。