c# – 快速多字符串替换
发布时间:2020-12-15 06:33:39 所属栏目:百科 来源:网络整理
导读:我需要执行多字符串替换.我有一个字符串,其中几个部分需要根据替代地图进行更改. 所有更换必须在一个操作中完成 – 这意味着如果“a”应替换为“b”,并且“b”必须用“c”替换,输入字符串为“abc”,结果将为“bcc” 我有一个基于正则表达式的解决方案,然后替
我需要执行多字符串替换.我有一个字符串,其中几个部分需要根据替代地图进行更改.
所有更换必须在一个操作中完成 – 这意味着如果“a”应替换为“b”,并且“b”必须用“c”替换,输入字符串为“abc”,结果将为“bcc” 这是我有的: public static string Replace(string s,Dictionary<string,string> substitutions) { string pattern = ""; int i = 0; foreach (string ch in substitutions.Keys) { if (i == 0) pattern += "(" + Regex.Escape(ch) + ")"; else pattern += "|(" + Regex.Escape(ch) + ")"; i++; } var r = new Regex(pattern); var parts = r.Split(s); string ret = ""; foreach (string part in parts) { if (part.Length == 1 && substitutions.ContainsKey(part[0].ToString())) { ret += substitutions[part[0].ToString()]; } else { ret += part; } } return ret; } 和测试用例: var test = "test aabbcc"; var output = Replace(test,new Dictionary<string,string>{{"a","b"},{"b","y"}}); Assert.That(output=="test bbyycc"); 解决方法
你可以用这个代替
var r = new Regex(string.Join("|",substitutions.Keys.Select(k => "(" + k + ")"))); return r.Replace(s,m => substitutions[m.Value]); 关键的是使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |