我不仅要插入字符串中的标记,还要插入格式本身。这是一个使用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
。
答案 0 :(得分:1)
我认为没有逃避知道选择适当格式的类型 - 或某些转换逻辑。 undefined reference to --
类型可能会对您造成一些影响。
FormattableString
在这种情况下,我让系统根据文化信息调整显示格式。当然,您必须事先知道类型或转换值。
除此之外,是的,我认为var lcid = "en-US";
FormattableString f = $"{model.Date:D}";
var s = f.ToString(new CultureInfo(lcid));
和ToString
方法是您最好的选择。