C# 变量c的插值字符串#

C# 变量c的插值字符串#,c#,string,interpolation,C#,String,Interpolation,我试图在C#中插入一个由两个字符串组合而成的字符串。我在VS 2015中有以下代码: DateTime date = DateTime.Now; string username = "abc"; string mask = "{date:yy}/{username}"; 我想要的结果是: 18/abc 我知道我可以这样插值: mask = $"{date:yy}/{username}" 但面具也是一种输入。所以我需要像这样的东西: string result = $"{mask}" 但结

我试图在C#中插入一个由两个字符串组合而成的字符串。我在VS 2015中有以下代码:

DateTime date = DateTime.Now;
string username = "abc";
string mask = "{date:yy}/{username}";
我想要的结果是:

18/abc
我知道我可以这样插值:

mask = $"{date:yy}/{username}"
但面具也是一种输入。所以我需要像这样的东西:

string result = $"{mask}"
但结果是:

"{date:yy}/{username}"
掩码实际上是从数据库下载的,在每种情况下,信息的顺序可能不同。 我需要在db中存储整个掩码,并且只在代码中对其进行补充。我不能像这样使用String.Replace()方法

mask.Replace({date}, date.ToString())
因为我需要添加一些格式,比如:yy,:yyy,:dd等等

有可能这样做吗?

当然


您可以使用
string.Format()

string mask = GetMaskFromDB(); //assume it returns "{0}/{1:yy}"
string username = "abc";
DateTime dt = DateTime.Now;

var result = string.Format(mask, username, dt);
结果:“abc/18”


参考资料:

在每种情况下,您所说的
的确切含义可能是什么?信息的顺序可能不同
?请给我们举一些例子,我认为陈述问题的更好方式是这样的:字符串掩码=“{date:yy}/{username}”。。。。后来。。。。DateTime日期=//something字符串用户名=//something字符串maskWithValues=howdoiinterpolethis(掩码);我没有说得很准确。掩码是从db下载的,我应该自动生成。我从db得到的是整个掩码,但我不能这样使用它:字符串结果=$“{Mask}”在一种情况下,掩码可以是“{date}/{username}”,但在另一种情况下,顺序可能会改变。@Piotr在这种情况下,您的掩码将类似于
“{1:yy}/{0}”,所以没关系。
string mask = $"{date:yy}/{username}";
string mask = GetMaskFromDB(); //assume it returns "{0}/{1:yy}"
string username = "abc";
DateTime dt = DateTime.Now;

var result = string.Format(mask, username, dt);