假设我有一个文本模板,其中包含许多需要填充的字段:
var template = "hello {$name}. you are {$age} years old. you live in {$location}"
and an IDictionary<string,string>
要替换的值:
key | value
===================
name | spender
age | 38
location| UK
填充模板的简单方法可能是这样的:
var output = template;
foreach(var kvp in templValues)
{
output = output.Replace(string.format("{{${0}}}", kvp.Key), kvp.Value);
}
然而,这似乎效率低下。有没有更好的办法?
您的方法没有任何问题,这取决于所使用的上下文。例如,在紧密的关键任务循环中,这不是最有效的方法,但对于偶尔使用,或者在 GUI 中,这可能是可以的。
更有效的解决方案是解析字符串。例如。搜索第一个{
然后是下一个}
。它们之间的文本是查找的关键,然后您可以替换它。然后,您从 后面的字符开始搜索}
。这种方法的优点是,如果您插入的值具有嵌入的标记,则该值不会被替换。缺点是解析时处理边缘情况比较困难。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)