2010-09-20 64 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扩展,否则这是无法实现的。你总是可以编写一个程序来搜索和替换你的代码,并将代码提供给它,然后用它的输出替换原代码。