是否有可能以某种方式在结果中使用计算进行RegEx替换? (在VS2010中)
如:
Grid\.Row\=\"{[0-9]+}\"
到
Grid.Row="eval(int(\1) + 1)"
答案 0 :(得分:1)
您可以使用MatchEvaluator来实现此功能,例如
String s = Regex.Replace("1239", @"\d", m => (Int32.Parse(m.ToString()) + 1).ToString());
Output: 23410
修改强> 我刚注意到......如果你的意思是“使用VS2010查找替换功能”而不是“使用C#”,那么答案就是“不”,我很害怕。
答案 1 :(得分:0)
您总是可以使用捕获来检索计算所需的任何值,然后使用由您的等式和捕获的任何值构建的新RegEx执行RegEx替换。
如果等式不使用输入文本中的任何内容,则只需一个RegEx即可。您只需通过将静态部分与计算值连接起来构建它。
答案 2 :(得分:0)
不幸的是,C#和.NET不提供eval
方法或等效方法。但是,可以使用库进行表达式解析(快速谷歌给我这个.NET Math Expression Parser)或自己编写(实际上非常简单,查看Shunting-yard Algorithm和{{3} })。只需捕获组,然后将组值输出到您编写的库/方法。
编辑:我现在看到你想要这个用于VS2010 程序。除非您编写自己的VS扩展,否则这是无法实现的。您可以随时编写程序来搜索和替换代码并将代码输入其中,然后将原始代码替换为其输出。