我有一个大文本模板,需要将标记化的部分替换为其他文本.令牌看起来像这样:## USERNAME ##.我的第一直觉只是使用String.Replace(),但是有更好,更有效的方法还是已经为此优化的Replace()?
你正在寻找System.Text.RegularExpressions.Regex.Replace() - 如果你的令牌很奇怪,你需要一个正则表达式来找到它们.
某种灵魂做了一些性能测试,在Regex.Replace(),String.Replace()和StringBuilder.Replace()之间,String.Replace()实际上名列前茅.
我必须这样做的唯一情况是发送模板化的电子邮件.在.NET中,MailDefinition类提供了开箱即用的功能.这就是你创建模板化消息的方式:
MailDefinition md = new MailDefinition(); md.BodyFileName = pathToTemplate; md.From = "test@somedomain.com"; ListDictionary replacements = new ListDictionary(); replacements.Add("<%To%>", someValue); // continue adding replacements MailMessage msg = md.CreateMailMessage("test@someotherdomain.com", replacements, this);
在此之后,将通过替换模板中的值来创建msg.Body.我想你可以看一下使用Reflector :)的MailDefinition.CreateMailMessage().很抱歉有点偏离主题,但如果这是你的情景,我认为这是最简单的方法.