C#中String.Replace()与Regex.Replace()替换字符串失效问题求助
问题原因
你替换失败是踩了两个低级错误:
- 第一版代码中拼接了多余的双引号
你在构造匹配字符串时前后加了\",相当于要匹配被双引号包裹的目标内容,但你的maindata原字符串里根本不存在双引号,完全匹配不到任何内容,替换自然不生效。 - 第二版简化的正则替换未转义元字符
正则语法中+属于特殊元字符,代表匹配前一个字符至少1次,不是字面意义的加号。你的目标字符串里包含Disney+,直接把未转义的字符串当正则pattern传入,肯定匹配失败。
解决方法
方案1:普通字符串替换(优先选择,无转义负担)
你不需要正则功能的话直接用String.Replace即可,不用加任何多余的转义和符号:
string maindata = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999"; string data = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999"; string strformula = maindata.Replace(data, "W51");
方案2:正则替换(需要正则匹配规则时使用)
如果必须用正则,先通过Regex.Escape()把pattern里的所有正则元字符转义为字面量:
string maindata = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999"; string data = "Operational Metrics~Domestic Subscribers Disney+~2015 FY~9999"; string strformula = Regex.Replace(maindata, Regex.Escape(data), "W51", RegexOptions.IgnoreCase);
内容的提问来源于stack exchange,提问作者user15940620
相关产品推荐
相关产品推荐

