Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串格式C{0,12:N0}(冒号和逗号)是什么意思?_C# - Fatal编程技术网

C# 字符串格式C{0,12:N0}(冒号和逗号)是什么意思?

C# 字符串格式C{0,12:N0}(冒号和逗号)是什么意思?,c#,C#,好的,下面是代码示例: string header = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n", "City", "Year", "Population", "Change (%)"); Console.WriteLine(header); string output; foreach (var city in cities) {

好的,下面是代码示例:

 string header = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n",
                                "City", "Year", "Population", "Change (%)");
  Console.WriteLine(header);
  string output;      
  foreach (var city in cities) {
     output = String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                            city.Item1, city.Item2, city.Item3, city.Item4, city.Item5,
                            (city.Item5 - city.Item3)/ (double)city.Item3);
     Console.WriteLine(output);
  }
 }
}
// The example displays the following output:
//    City            Year  Population    Year  Population    Change (%)
//    
//    Los Angeles     1940   1,504,277    1950   1,970,358        31.0 %
//    New York        1940   7,454,995    1950   7,891,957         5.9 %
//    Chicago         1940   3,396,808    1950   3,620,962         6.6 %
//    Detroit         1940   1,623,452    1950   1,849,568        13.9 %
我知道args{0:N0}后面的冒号表示没有小数,但是comas呢?像{0,-12}和{1,12}字符串格式的参数后面的逗号是什么意思

数字(“N”)格式说明符将数字转换为字符串 格式“-d,ddd,ddd.ddd…”,其中“-”表示负数 符号如果需要,“d”表示数字(0-9),“,”表示组 分隔符,“.”表示小数点符号。精度 说明符指示小数点后所需的位数 指向如果省略精度说明符,则小数位数 位置由当前NumberFormatInfo.NumberDecimalDigits定义 财产

结果字符串受格式信息的影响 当前NumberFormatInfo对象的。下表列出了 控制结果格式的NumberFormatInfo属性 绳子

对于N0,实际输出将不包含小数点后的数字(如整数值)

要将浮点数向右对齐,请在 冒号。键入逗号,后跟若干空格,例如“0,10:0.0” (这只能在String.Format方法中使用,不能在double.ToString中使用。) 方法)。要将数字向左对齐,请使用负数空格


MSDN文档是您的朋友(我在上面的评论中给出的链接也不是最好的):

每个格式项采用以下形式,由以下组件组成: {index[,alignment][:formatString]}

因此,
索引
显然是所提供参数的索引:

String.Format("Second argument = {1}, first argument = {0}", arg1, arg2);
对齐
指定所需的字段宽度和水平对齐:

如果对齐为正,则字段中的格式化数据为右对齐;如果对齐为负,则字段中的格式化数据为左对齐

formatString
您已经知道(例如)。

它们是索引组件和对齐组件,它们是的一部分

{index[,alignment][:formatString]}
在您的例子中,
{0,-12}
{1,12}
0
1
是索引组件,它指向您要格式化的前两个元素。
-12
12
是对齐组件。它们可以是负值或正值

正值表示向右对齐,负值表示向左对齐

Console.WriteLine("{0, -12}{1}", "Los Angeles", "1940"); // prints "Los Angeles 1940"
如果要使用对齐组件,则必须用逗号将其与索引组件分开。从语法中可以看到,冒号(
)用
formatString
分隔对齐组件

由于您将
{0,-12}
用于
“洛杉矶”
(即
11
字符),因此它将与左侧的一个(
12-11
)空白字符对齐

Console.WriteLine("{0, -12}{1}", "Los Angeles", "1940"); // prints "Los Angeles 1940"
但是
Chicago
(即
7
字符),它将与左边的五个(
12-7
)空格字符对齐,如下所示:

Console.WriteLine("{0, -12}{1}", "Chicago", "1940"); // prints "Chicago     1940"
对于正值

Console.WriteLine("{0, 12}{1}", "Los Angeles", "1940"); // prints " Los Angeles1940"
但是


如果有@Ian:噢,谢谢!我只找到了lol。谢谢,当我阅读msdn文档时,我真的不太明白,因为这个例子并不多。花时间学习如何浏览msdn页面。我个人发现,他们将类与各种成员/方法分开需要一些时间,但一旦你习惯了,它们就会消失伊恩:哦,好吧,谢谢你的建议,不过我总是浏览他们的网页,如果我不能得到任何明确的答案,我会在这里问。谢谢!那么为什么{0,-12}和{2,12}在外观上没有任何区别呢?
Console.WriteLine("{0, 12}{1}", "Chicago", "1940"); // prints "     Chicago1940"