日期:2014-05-16  浏览次数:20854 次

求正则表达式,高分相酬!
在升级一个项目,因为引用的基础类库换了,所以遇到把原先项目中代码里调用的函数都要改成新的调用方法,这个调用的地方太多了,所以需要进行查找替换,但是因为调用时使用的参数不一样,不能一次性替换,所以需要用正则表达式。

以前是SCMessage.ShowMSG([参数],0)这样的调用,现在要改成Parameters.MBC.ShowMSG([参数],MessageBoxType.Warn)

比如SCMessage.ShowMSG(“CSDN论坛",0),使用正则替换后是Parameters.MBC.ShowMSG(“CSDN论坛",MessageBoxType.Warn)

比如SCMessage.ShowMSG(SRV.Message,0),使用正则替换后是Parameters.MBC.ShowMSG(SRV.Message,MessageBoxType.Warn)

比如SCMessage.ShowMSG(Func.BuildStr("AAA",Bstr,"C"),0),使用正则替换后是Parameters.MBC.ShowMSG(Func.BuildStr("AAA",Bstr,"C"),MessageBoxType.Warn)

可以看到红色的字是不动的,就是修改函数的调用方法,求在IDE里使用查找替换怎么写这个正则表达式。
------解决方案--------------------
不建议使用正则表达式,你可以利用VS的重构功能。

方法是,首先创建一个和你的原来的函数名字、签名一样,但是不包含实现的方法,我们称之为桩子。

然后对它重构,转换成新的名字,这样,VS会自动对调用重命名。

最后将最终的实现放在改名后的桩子中。
------解决方案--------------------
你的IDE是VS2010?手边没有2010的环境,不过你可以这样试试:

vs2010内:
serach:  SCMessage.ShowMSG\({.*},0\)
replace:  Parameters.MBC.ShowMSG(\1,MessageBoxType.Warn)