花括号在C#字符串中是什么意思?

花括号在C#字符串中是什么意思?,c#,string-formatting,C#,String Formatting,在这段代码中,{0,-35}是什么意思?这些括号是字符串中值的占位符 因此,rdr[“ProductName”]将被格式化为字符串的第一个括号。而rdr[“Total”]将在字符串的第二个括号中格式化 前提是: while (rdr.Read()) { Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]); } 然后您将输出到控制台: 产品:我的产品总数:2.98 问题更

在这段代码中,{0,-35}是什么意思?

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

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

前提是:

while (rdr.Read())
{
    Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]);
}
然后您将输出到控制台:

产品:我的产品总数:2.98

问题更新后:


{0,-35}
零件if用于对齐。有关格式和对齐的详细信息。

用于将字符串与空格对齐

要将字符串向右或向左对齐,请使用静态方法string.Format。若要将字符串向左对齐(右侧的空格),请使用带逗号(,)和负数字符的格式化模式:string.Format({0,–10}),text。若要向右对齐,请使用正数:{0,10}

看看


那些{}括号用于字符串格式设置。例如,您的案例rdr[“ProductName”]
给出了一个格式说明符{0,-35}…它将左对齐,空格填充到右边。

更简单的一行是:

rdr["ProductName"] = "My Product";
rdr["Total"] = 2.98;
该函数接受任意数量的参数。它们将插入到相应索引处的字符串中。在本例中,索引0保存整数5。结果是字符串“5”

现在,您可以选择指定格式字符串和索引。如下所示:

Console.WriteLine("{0}", 5);
这会将
5
格式化为
0.00
,从而产生
5.00

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

对齐(可选):表示字符串的最小长度。 正值时,字符串参数将右对齐,如果 字符串不够长,将在字符串上填充空格 如果是left.Negative值,字符串参数将被左对齐 如果字符串不够长,字符串将被填充 右边的空格。如果未指定此值,我们将使用默认值 设置为字符串参数的长度

在你的例子中:

Console.WriteLine("{0:0.00}", 5);
  • {0,-35}
    意味着字符串必须至少包含35个字符,左对齐(结尾的空格填充)
  • {1,2}
    表示字符串必须至少为2个字符,右对齐(前面的空格填充)
我建议,还有像
“Product:{0,-35}Total:{1,2}”
这样的。

字符串被称为复合格式 字符串

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

最小宽度对于对齐列很有用。如果该值为负值,则结果将左对齐;否则,将右对齐。例如:

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

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

您可以看到,因为我们为产品名称指定了最小宽度为
35
个字符,所以无论它们的实际长度(在上面的示例中分别为10和13)如何,它们在结果字符串中都将始终占据至少那么多的空间。因为我们指定了
-35
(负数),产品名称将左对齐。

谢谢您的回复,但是这里的0,-35和1,2是什么意思?虽然这只是半个答案。是的,
,-35
用于对齐,但这不是格式字符串占位符的唯一目的。用户更感兴趣的是“-35和1,2在这里的意思”正如你在Pablo Santa Cruz的评论中所看到的,我以为他知道字符串占位符,但他从未见过字符串对齐的用法。使用你不懂的代码是不明智的。我建议你在哪里找到这段代码,问作者。