在字符串插值中格式化破折号

时间:2014-11-18 21:55:59

标签: c# string-formatting string-interpolation c#-6.0

我刚刚在C#6.0中检查了新的字符串插值功能(有关详细信息,请参阅Language Features page at Roslyn)。使用当前语法(预计会改变),你可以做这样的事情(例子来自我刚才写的博客文章):

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyyMdd}";

但是,我似乎无法在格式化部分中包含短划线,例如:

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth:yyyy-M-dd}";

如果我这样做,我会收到错误:

  

错误CS1056意外字符' - 'StringInterpolation Program.cs 21

有什么方法可以让破折号在格式化部分工作吗?我知道我可以使用string.Format(),但我想看看它是否可以用字符串插值来完成,就像练习一样。

编辑:因为似乎没有人知道我在说什么,请参阅主题上的my blog post,看看它应该如何运作。

2 个答案:

答案 0 :(得分:45)

最终版本更加用户友好:

var text = $"The time is {DateTime.Now:yyyy-MM-dd HH:mm:ss}";

答案 1 :(得分:7)

使用VS 2015预览版中的字符串插值版本,您可以在插值格式中使用短划线等字符,将其括在另一对引号中:

var dob2 = "Customer \{customer.IdNo} was born on \{customer.DateOfBirth : "yyyy-M-dd"}";