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

ros*_*it3 9 c# string-formatting

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

{0,-35}在此代码中的含义是什么?

Miz*_*zor 8

更简单的一行是:

Console.WriteLine("{0}", 5);
Run Code Online (Sandbox Code Playgroud)

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

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

Console.WriteLine("{0:0.00}", 5);
Run Code Online (Sandbox Code Playgroud)

这样就形成了5with 0.00,导致了5.00.

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

alignment(可选):这表示字符串的最小长度. 正确的值,字符串参数将是右对齐的,如果字符串不够长,则字符串将在左侧填充空格.负值,字符串参数将保留为justied,如果字符串不够长,则字符串将在右侧填充空格.如果未指定此值,我们将默认为字符串参数的长度.

所以在你的例子中:

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

我推荐这篇文章,以及string.Format文档.


Pab*_*ruz 7

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

因此,rdr["ProductName"]将格式化为字符串的第一个括号.并且rdr["Total"]将在字符串的第二个括号进行格式化.

提供:

rdr["ProductName"] = "My Product";
rdr["Total"] = 2.98;
Run Code Online (Sandbox Code Playgroud)

然后你将输出到控制台:

产品:我的产品总数:2.98

问题更新后:

{0,-35}部分是否用于对齐目的.有关C#官方文档的格式和对齐的更多信息.


Sae*_*ini 7

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

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

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

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

结果是:

Product: 1stProduct                          Total: 99
Product: SecondProduct                       Total: 111  
Run Code Online (Sandbox Code Playgroud)

您可以看到,因为我们已经35为产品名称指定了最小字符宽度,所以它们将始终占用结果字符串中的至少那么多空间,而不管它们的实际长度(分别在上面的示例中为10和13).因为我们已指定-35(否定),所以产品名称将左对齐.