如何从字符串创建插值字符串?

时间:2019-05-20 14:50:09

标签: c#

我正在使用一个从数据库获取模板,然后以编程方式填写值的系统:

//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.

是否可以根据字符串创建插值字符串?

1 个答案:

答案 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);