我正在使用一个从数据库获取模板,然后以编程方式填写值的系统:
//using System.Runtime.CompilerServices;
var template = "Hello {0}"; // this string comes from the database
var name = "Joe";
var message = FormattableStringFactory.Create(template, new object[] { name });
Console.WriteLine(message);
此代码示例有效,但我只能使用数字符号。我想将模板以插值字符串格式存储在数据库中,如下所示:
var template = "Hello {name}";
这会引发Run-time exception (line __): Input string was not in a correct format.
是否可以根据字符串创建插值字符串?
答案 0 :(得分:0)
我以(可能)怪异的方式做类似的事情....但是它起作用了,所以我尝试与您分享我的结论:
public static string ExtendedStringFormat(this string source, List<Tuple<string, string>> values)
{
string returnvalue = source;
foreach(Tuple<string, string> my_touple in values)
{
returnvalue = returnvalue.Replace(string.Concat('{', my_touple.Item1, '}'), my_touple.Item2);
}
return returnvalue;
}
您可以这样称呼它:
List<Tuple<string, string>> lst = new List<Tuple<string,string>>();
lst.Add(new Tuple<string, string>("test","YAYYYYYY"));
lst.Add(new Tuple<string, string>("test2","YAYYYYYY22222222"));
string ret = "hem... hi? {test}, {test2}";
ret = ret.ExtendedStringFormat(lst);