来自变量C#的插值字符串

时间:2018-10-25 11:21:14

标签: c# string interpolation

我正在尝试在C#中内插两个字符串组成的字符串。我在VS 2015中有以下代码:

DateTime date = DateTime.Now;
string username = "abc";
string mask = "{date:yy}/{username}";

我想要的结果是:

18/abc

我知道我可以像这样插值

mask = $"{date:yy}/{username}"

但是mask也是输入。所以我需要类似的东西:

string result = $"{mask}"

但结果是:

"{date:yy}/{username}"

掩码实际上是从数据库下载的,在每种情况下,信息的顺序可能不同。 我需要将整个掩码存储在db中,并且仅在代码中对其进行补充。我不能使用

之类的String.Replace()方法
mask.Replace({date}, date.ToString())

因为我需要添加一些格式,如:yy,:yyyy,:dd等。

有可能这样做吗?

2 个答案:

答案 0 :(得分:1)

当然string.Format()

string mask = string.Format("{0:yy}/{1}", date, username);

string interpolation

string mask = $"{date:yy}/{username}";

答案 1 :(得分:1)

您可以使用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”

参考文献: DotNetFiddle Example String.Format Method