花括号在C#字符串中意味着什么?

时间:2012-03-19 11:30:08

标签: c# string-formatting

while (rdr.Read())
{
    Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]);
}

此代码中{0,-35}是什么意思?

5 个答案:

答案 0 :(得分:8)

更简单的一行是:

Console.WriteLine("{0}", 5);

该函数接受任意数量的参数。它们将被插入到相应索引处的字符串中。在这种情况下,索引0保存整数5.结果是字符串“5”。

现在,您可以选择指定格式字符串以及索引。像这样:

Console.WriteLine("{0:0.00}", 5);

这会将50.00格式化,从而生成5.00

这就是数字的情况,但我认为这些更容易解释。对于字符串,“格式”表示对齐。另请注意,您使用逗号而不是冒号来分隔索引和格式。

  

alignment(可选):这表示字符串的最小长度。    Postive 值,字符串参数将是右对齐的,如果是   字符串不够长,字符串将用空格填充   左边。 否定值,字符串参数将被保留   如果字符串不够长,则会填充字符串   右边的空格。如果未指定此值,我们将默认   到字符串参数的长度。

所以在你的例子中:

  • {0,-35}表示字符串必须至少为35个字符,左对齐(末尾有空格填充)。
  • {1,2}表示字符串必须至少为2个字符,右对齐(前面的空格填充)。

我建议使用this article,以及string.Format documentation

答案 1 :(得分:7)

这些括号是值的字符串中的占位符。

因此,rdr["ProductName"]将被格式化为字符串的第一个括号。 rdr["Total"]将在字符串的第二个括号中格式化。

提供:

rdr["ProductName"] = "My Product";
rdr["Total"] = 2.98;

然后您将输出到控制台:

  

产品:我的产品总数:2.98

问题更新后:

{0,-35}部分用于对齐目的。有关格式和对齐的更多信息on C#'s official documentation

答案 2 :(得分:6)

"Product: {0,-35} Total: {1,2}"之类的字符串称为复合格式 字符串

花括号内的第一个数字(从零开始)称为格式项,对应于复合格式字符串后面的参数的位置。这些数字可以选择后跟逗号(,)和minimum width来应用。

最小宽度对于对齐列非常有用。如果值为负,则结果将左对齐;否则,它将是右对齐的。例如:

Console.WriteLine("Product: {0,-35} Total: {1,2}", "1stProduct", 99);
Console.WriteLine("Product: {0,-35} Total: {1,2}", "SecondProduct", 111);

结果:

Product: 1stProduct                          Total: 99
Product: SecondProduct                       Total: 111  

您可以看到,因为我们为产品名称指定了最小宽度为35个字符,所以在结果字符串中,它们总是占用至少的空间,而不管它们的实际情况如何长度(分别在上例中为10和13)。由于我们已指定-35(否定),因此产品名称将左对齐。

答案 3 :(得分:3)

用于将空格与字符串对齐

要将字符串向右或向左对齐,请使用静态方法String.Format。要将字符串对齐到左侧(右侧的空格),请使用带逗号(,)的格式化patern,后跟负数字符:String.Format(“{0,-10}”,text)。要右对齐,请使用正数:{0,10}。

看看

http://www.csharp-examples.net/align-string-with-spaces/

答案 4 :(得分:2)

这些{}括号用于字符串格式化目的。例如,你的案例rdr [“ProductName”] 给出了一个格式说明符{0,-35} ...它将与左边的空格对齐。