字符串{0}中的大括号

时间:2011-03-17 16:55:42

标签: c# string curly-braces

我经常在一个通常包含数字的字符串中看到花括号,例如:

string something = "I have {0} cats";

虽然我可以弄清楚这意味着什么,但我可以说我从来没有读过任何与其用法有关的文件。 c#字符串文档似乎没有任何与这些相关的信息。有人能指出我正确的方向吗?

6 个答案:

答案 0 :(得分:20)

在string.Format中用作值参数的占位符。 string.Format(“我有{0}猫”,5);打印“我有5只猫”

所以你可以使用string.Format(something,5);并得到与上面相同的结果

答案 1 :(得分:12)

这是String.Format使用的普通格式字符串,称为“复合格式”。有关它的更多信息,请查看here

答案 2 :(得分:5)

*使用C#6.0&朋友们,花括号不仅仅是string.Format了!现在,他们可以表示interpolated strings,您可以在其中混合使用C#对象和代码而不需要string.Format& {0} {1} {2}开销。

注意:插值字符串以美元符号开头$

来自the language reference page linked above

  

用于构造字符串。插值字符串看起来像   包含插值表达式的模板字符串。一个   插值字符串返回一个替换插值的字符串   它包含的表达式及其字符串表示形式。

     

插值字符串的参数比它更容易理解   复合格式字符串。例如,插值字符串

     

Console.WriteLine($"Name = {name}, hours = {hours:hh}");

     

包含两个插值表达式,' {name}'和' {小时:hh}'。该   等效的复合格式字符串是:

     

Console.WriteLine("Name = {0}, hours = {1:hh}", name, hours);

注意:如果你不知道,Console.WriteLine有一种内置的string.Format,如果你在上面的例子中可能不明显没有意识到进去。

如果您希望在不依赖于Console.WriteLine魔法的情况下获取相同的字符串,则可能更容易阅读此内容...

string message = $"Name = {name}, hours = {hours:hh}"; // interpolated

......等同于......

string message = string.Format("Name = {0}, hours = {1:hh}", name, hours); // old school
  

插值字符串的结构是:

     

$"<text> {<interpolated-expression> [,<field-width>] [<:format-string>] } <text> ..."
  其中:

     
      
  • field-width 是一个有符号整数,表示字段中的字符数。如果是正数,则该字段是右对齐的;如果为负,左对齐。
  •   
  • format-string 是一种格式字符串,适用于正在格式化的对象类型。例如,对于DateTime值,它可以是标准的日期和时间格式字符串,例如&#34; D&#34;或&#34; d&#34;。
  •   
     

您可以在任何可以使用字符串的位置使用插值字符串   文字。每次使用代码时都会评估插值字符串   插值字符串执行。这允许你分开   内插字符串的定义和评估。

     

要在插值字符串中包含大括号(&#34; {&#34;或&#34;}&#34;),请使用   两个花括号,&#34; {{&#34;或者&#34;}}&#34;。

*作为@Ben points out in a comment, above。 (对不起,在途中错过了。)

答案 3 :(得分:3)

它几乎肯定会在String.Format调用中使用,其中编号的占位符被其他参数替换:

string something = "I have {0} cats";
int myNumCats = 2
var theResult = String.Format(something,myNumCats);

答案 4 :(得分:1)

答案 5 :(得分:0)

检查http://msdn.microsoft.com/es-es/library/b1csw23d%28v=vs.80%29.aspx,它是string.format方法的文档,它是用于用值替换{0}的方法。