我目前正在构建这个小型模板引擎。
它需要一个参数中包含模板的字符串,以及一个“标签,值”的字典来填充模板。
在引擎中,我不知道模板中将包含哪些标签,哪些不会。
我目前正在字典上迭代(foreach),解析我放入字符串生成器中的字符串,并将模板中的标签替换为相应的值。
有没有更有效/方便的方法来做到这一点?
我知道这里的主要缺点是每次都为每个标签完全解析字符串构建器,这是非常糟糕的......
(我也在检查,虽然没有包含在示例中,但在处理后我的模板不再包含任何标签。它们都以相同的方式格式化:@@tag@@)
//Dictionary<string, string> tagsValueCorrespondence;
//string template;
StringBuilder outputBuilder = new StringBuilder(template);
foreach (string tag in tagsValueCorrespondence.Keys)
{
outputBuilder.Replace(tag, tagsValueCorrespondence[tag]);
}
template = outputBuilder.ToString();
回应:
@Marc:
string template = "Some @@foobar@@ text in a @@bar@@ template";
StringDictionary data = new StringDictionary();
data.Add("foo", "value1");
data.Add("bar", "value2");
data.Add("foo2bar", "value3");
Output:“value2 模板中的一些文本”
代替:“value2 模板中的一些 @@foobar@@ 文本”