求正则表达式,高分相酬! 正则表达式正则类 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 easy:str=Regex.Replace(str,@"(?i)SCMessage.ShowMSG\((.*),0\)","Parameters.MBC.ShowMSG($1,MessageBoxType.Warn)"); void Main(){ string[] ss={"SCMessage.ShowMSG(\"CSDN论坛\",0)","SCMessage.ShowMSG(SRV.Message,0)","SCMessage.ShowMSG(Func.BuildStr(\"AAA\",Bstr,\"C\"),0)"}; var reg=new Regex(@"(?i)SCMessage.ShowMSG\((.*),0\)"); foreach(string s in ss) { Console.WriteLine("{0} --> {1}",s,reg.Replace(s,"Parameters.MBC.ShowMSG($1,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) */} 不建议使用正则表达式,你可以利用VS的重构功能。方法是,首先创建一个和你的原来的函数名字、签名一样,但是不包含实现的方法,我们称之为桩子。然后对它重构,转换成新的名字,这样,VS会自动对调用重命名。最后将最终的实现放在改名后的桩子中。 vs2012内测试可以使用:serach: SCMessage.ShowMSG\((.*),0\)replace: Parameters.MBC.ShowMSG($1,MessageBoxType.Warn) 这样对吧?结果SCMessage.ShowMsg("未撰写消息主题!",0);被替换成 Parameters.MBC.ShowMsg($1,MessageBoxType.Warning);了 传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。 传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。 传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。这我知道,但是错误的地方多达6500多处,要一个个改的话太麻烦了。 传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。这我知道,但是错误的地方多达6500多处,要一个个改的话太麻烦了。不建议你改,你应该增加一个方法,保持和原来的方法接口一样,内部转换为对新方法的调用,作为适配器。 传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。这我知道,但是错误的地方多达6500多处,要一个个改的话太麻烦了。不建议你改,你应该增加一个方法,保持和原来的方法接口一样,内部转换为对新方法的调用,作为适配器。因为我正在对好几套软件进行统一升级,这个方法是原来的一个通用类库的,现在因为为了规范化,重新整理了新的通用类,每个项目都会重新改过,你说的方法固然可以,甚至我可以把类库的代码写在单个项目里都行,但是就不统一了,一些常规的动作要改的话,我只要改一下这个公用的类库就行了。否则每个客户那里的项目我都得重新编译了。 你的IDE是VS2010?手边没有2010的环境,不过你可以这样试试:vs2010内:serach: SCMessage.ShowMSG\({.*},0\)replace: Parameters.MBC.ShowMSG(\1,MessageBoxType.Warn) C#调用C++写的dll问题 WEBFORM 中关于下载、打开URL的一些问题 我是来请教问题的,mysql验证,求好人帮忙, 谁有c#开发的web应用程序? 【Q】如何遍历枚举的值,把值绑定到DropDownList控件上?解决立刻结贴 为什么一个form的keypress事件不能捕获 F1-F12 我是新手,,帮忙解决一下 如何 让MDI的父窗口作为一个面板的子控件。 做程序员对英语的要求有多高???? 配置.net服务器,需要安装那些东西? 请问如何使用C#模拟登录这种HTTPS验证页面 小白求助,求一段将dataset对象中的数据保存到数组中的代码
{
string[] ss={"SCMessage.ShowMSG(\"CSDN论坛\",0)","SCMessage.ShowMSG(SRV.Message,0)","SCMessage.ShowMSG(Func.BuildStr(\"AAA\",Bstr,\"C\"),0)"};
var reg=new Regex(@"(?i)SCMessage.ShowMSG\((.*),0\)");
foreach(string s in ss)
{
Console.WriteLine("{0} --> {1}",s,reg.Replace(s,"Parameters.MBC.ShowMSG($1,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)
*/
}
serach: SCMessage.ShowMSG\((.*),0\)
replace: Parameters.MBC.ShowMSG($1,MessageBoxType.Warn)
这样对吧?
结果SCMessage.ShowMsg("未撰写消息主题!",0);被替换成
Parameters.MBC.ShowMsg($1,MessageBoxType.Warning);
了
传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。
传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。
传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。这我知道,但是错误的地方多达6500多处,要一个个改的话太麻烦了。
传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。这我知道,但是错误的地方多达6500多处,要一个个改的话太麻烦了。不建议你改,你应该增加一个方法,保持和原来的方法接口一样,内部转换为对新方法的调用,作为适配器。
传入参数类型不一样了,能重构吗?原来是0,1,2,3,4,5现在传入的是enum类型。我的意思是,你应该让编译器去检查你的修改是否正确。因为遇到类型不匹配,编译器会提醒你,这样就不会遗漏和错误。这我知道,但是错误的地方多达6500多处,要一个个改的话太麻烦了。不建议你改,你应该增加一个方法,保持和原来的方法接口一样,内部转换为对新方法的调用,作为适配器。因为我正在对好几套软件进行统一升级,这个方法是原来的一个通用类库的,现在因为为了规范化,重新整理了新的通用类,每个项目都会重新改过,你说的方法固然可以,甚至我可以把类库的代码写在单个项目里都行,但是就不统一了,一些常规的动作要改的话,我只要改一下这个公用的类库就行了。否则每个客户那里的项目我都得重新编译了。
serach: SCMessage.ShowMSG\({.*},0\)
replace: Parameters.MBC.ShowMSG(\1,MessageBoxType.Warn)