我正在构建一个小型模板引擎。它需要一个包含模板的字符串参数和一个“标签,值”字典来填充模板。
在引擎中,我不知道哪些标签会出现在模板中,哪些不会。
目前,我正在对字典进行迭代(foreach),将我的字符串放入字符串生成器中,并通过替换模板中的标签为其相应的值来解析它。
有没有更有效/方便的方法来做到这一点呢?我知道主要缺点在于每个标签都要针对整个字符串生成器进行解析,这是相当糟糕的...
(尽管未在示例中包含)我还检查了一下,在处理之后,我的模板不再包含任何标签。它们都以相同的方式格式化:@@tag@@
在引擎中,我不知道哪些标签会出现在模板中,哪些不会。
目前,我正在对字典进行迭代(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");
输出: "value2模板中的一些文本"
而不是: "value2模板中的一些@@foobar@@文本"