如何用一行代码替换动态词组?
如果是查询固定词汇的替换,我们都是先查找,然后替换。
比如:查找“我们”在下面的句子里面,把他替换为“我”
微软Xbox部门负责人菲尔•斯宾塞表示:“我认为在Xbox的发展历史上,目前我们正在开发的游戏很大可能比以往任何时候都多。” 菲尔•斯宾塞说到:“无论是订阅平台、硬件设备还是游戏商店的平台经营者,都在积极地投资新颖、但可能风险较以往更大的东西,因为如果新的投资内容可行,我们就能吸引更多新玩家进入游戏平台,维持游戏平台生态系统的正常运转并从中获得价值。”
代码很简单
string s=@"微软Xbox部门负责人菲尔•斯宾塞表示:“我认为在Xbox的发展历史上,
目前我们正在开发的游戏很大可能比以往任何时候都多。” 菲尔•斯宾塞说到:“
无论是订阅平台、硬件设备还是游戏商店的平台经营者,
都在积极地投资新颖、但可能风险较以往更大的东西,
因为如果新的投资内容可行,
我们就能吸引更多新玩家进入游戏平台,维持游戏平台生态系统的正常运转并从中获得价值。”";
var result=s.Replace("我们","我");
如果我们要替换的数据不是固定,而是有一定的规则,比如下面这个《反兴奋剂管理办法》中,我们希望在每一条条例前面加2个#号。
《反兴奋剂管理办法》已于2021年7月14日经国家体育总局第12次局长办公会审议通过,现予公布,自公布之日起施行。
第一条为了防止在体育运动中使用兴奋剂,保护体育运动参与者的身心健康,维护体育竞赛的公平竞争,维护国家荣誉和形象,弘扬社会主义核心价值观和中华体育精神,规范反兴奋剂工作,根据《中华人民共和国体育法》《反兴奋剂条例》等法律法规,制定本办法。
第二条本办法所称兴奋剂,是指年度《兴奋剂目录》所列的禁用物质和禁用方法。
本办法所称兴奋剂违规包括以下情形:
(一)检测结果阳性;
(二)使用或企图使用兴奋剂;
(三)逃避、拒绝或未能完成样本采集;
第三条体育运动中的反兴奋剂工作,适用本办法。
第四条反兴奋剂工作坚持“零容忍”,坚持严令禁止、严格检查、严肃处理的方针,推动构建“拿干净金牌”的反兴奋剂长效治理体系。
反兴奋剂工作遵循以下原则:
(一)预防为主,惩防并举;
(二)公平、公正、公开;
(三)维护运动员和辅助人员合法权益。
普通替换思路是通过正则表达式找出开头包含“第x条”的字符。
var input="输入要替换的内容。。。"
var matches=Regex.Matches(input,"第.条");
foreach(var match in matches){
input=input.Replace(match.Value,"##"+match.Value);
}
还有没有更好的方法呢?
其实是有的,那就是直接使用正则表达式的替换方法。
var input="输入要替换的内容。。。"
var matches=Regex.Replace(input,"(?第.条)","##$1");//$1代表的是正则表达式匹配到的第一组,如果有第二组用$2表示,以此类推
这样就从上面的3行代码变成一行代码。
你学会了吗?
参考:
【1】https://docs.microsoft.com/zh-cn/dotnet/standard/base-types/substitutions-in-regular-expressions