在带有格式字符串的大括号之后,如何在插入字符串中转义大括号?

时间:2019-11-19 10:48:29

标签: c# string-interpolation

以下崩溃:

$"{{{DayOfWeek.Friday:d}}}"

如果我在第一个右大括号后放置一个空格,它可以工作,但是我不想在该空格。

有2个问题:

  1. 为什么它会崩溃,而不是将最后两个大括号视为文字大括号?
  2. 我该怎么做?

1 个答案:

答案 0 :(得分:2)

请查看MSDN中的Escaping Braces

  

例如,考虑使用格式项“ {{{0:D}}}”   显示一个大括号,一个数字格式为小数   数字和右括号。但是,格式项实际上是   解释如下:前两个开括号   (“ {{”)被转义并产生一个开括号。接下来的三个   字符(“ {0:”)被解释为格式项的开头。的   下一个字符(“ D”)将被解释为十进制标准   数字格式说明符,但接下来的两个转义大括号(“}}”)产生   一个大括号。因为结果字符串(“ D}”)不是标准的   数字格式说明符,结果字符串解释为   自定义格式字符串,表示显示文字字符串“ D}”。

这正是您的情况,因此您得到了不正确的格式说明符 对于您的摘要,您可以尝试使用旧的string.Format

string.Format("{0}{1:d}{2}", "{", DayOfWeek.Friday, "}");