我有一个用户选择的字符串模板,我需要采用该模板并填写所需的信息。
string templateString = "%author% - %title% (%year%)";
我可以执行 .Contains() 和 .Replace(),但是模板可能有大量输入或少量输入,例如:
string templateString = "%author% - %publisher% - %isbn% - %asin% - %title% (%year%)";
因此,为用户可以选择的每个选项执行 .Contains() 和 .Replace() 似乎效率低下,我希望做的是找到一种更好的方法来用请求的信息填充 templateString 。任何帮助将不胜感激。这将用于数千种物品。
该程序本身会获取用户输入的所有文件(电子书,我们中的一些人有数千个),并且它会根据单个用户的模板重命名每本电子书,并使用从电子书中抓取的元数据填充信息。
我在其他地方发布了这个,但看起来这对于您的情况来说是一个很好的方法(我自己也这样做过)。基本上,您使用正则表达式替换为匹配评估器回调:
regex = new Regex(@"\%(?<value>.*?)\%",
RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture);
string replacedText = regex.Replace(<text>,
new MatchEvaluator(this.EvaluateMatchCallback));
那么你的回调将如下所示:
private string EvaluateMatchCallback(Match match) {
string templateInsert = match.Groups["value"].Value;
// or whatever
string replacedText = GetReplacementTextBasedOnTemplateValue(templateInsert);
return replacedText;
}
Where GetReplacementTextBasedOnTemplateValue
是一种方法,它将返回与正则表达式匹配的占位符相对应的任何值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)