内插字符串中的内插格式字符串

时间:2016-11-14 13:26:11

标签: .net string-interpolation

我不仅要插入字符串中的标记,还要插入格式本身。这是一个使用string.Format的示例,它从本地变量加载格式字符串:

object boxedDate = DateTime.Today;
var dateFormat = "MM-dd-yyyy";
var dateString = string.Format($"{{0:{dateFormat}}}", boxedDate);

但是,使用插值字符串语法,字符串的格式部分似乎纯粹是字面意思。从概念上讲,我想做这样的事情:

dateString = $"{boxedDate:{dateFormat}}";
当然,

不起作用。我知道我可以取消装箱日期时间并像这样调用.ToString()

dateString = $"{((DateTime)boxedDate).ToString(dateFormat)}";

...但这需要我在运行时知道类型。这可以是十进制,整数,日期等。

这不是交易破坏者或任何事情。如果使用插值字符串语法没有实际的方法,我总是可以使用string.Format

1 个答案:

答案 0 :(得分:1)

我认为没有逃避知道选择适当格式的类型 - 或某些转换逻辑。 undefined reference to -- 类型可能会对您造成一些影响。

FormattableString

在这种情况下,我让系统根据文化信息调整显示格式。当然,您必须事先知道类型或转换值。

除此之外,是的,我认为var lcid = "en-US"; FormattableString f = $"{model.Date:D}"; var s = f.ToString(new CultureInfo(lcid)); ToString方法是您最好的选择。