首页 > 解决方案 > 来自变量c#的插值字符串

问题描述

我正在尝试在 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、:yyyy、:dd 等。

有没有可能做到这一点?

标签: c#stringinterpolation

解决方案


您可以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 示例String.Format 方法


推荐阅读