什么是字符串格式 C# {0,12:N0}(冒号和逗号)的意思
本文关键字:意思 N0 格式 字符串 什么 | 更新日期: 2023-09-27 18:31:34
好的,这是代码示例:
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} 后面的冒号意味着没有小数,但是逗号呢? 像 {0,-12} 和 {1,12} 字符串格式参数后的逗号是什么意思?
MSDN 文档是你的朋友(我在上面的评论中给出的链接也不是最好的):
复合格式
每个格式项采用以下形式,由以下组件组成: {index[,alignment][:formatString]}
因此,index
显然是所提供参数的索引:
String.Format("Second argument = {1}, first argument = {0}", arg1, arg2);
Alignment
指定所需的字段宽度和水平对齐方式:
如果对齐方式为正,则字段中的格式化数据为右对齐,如果对齐方式为负,则为左对齐。
String.Format("{0,-12}" + // first argument, left align, 12 character wide column
"{1,8:yyyy}" + // second argument, right align, 8 character wide column,
// formatted as a year
"{2,12:N0}" + // third argument, right align, 12 character wide column,
// formatted as a number, 0 decimal places
以及您已经知道formatString
(例如数字("N")格式说明符)。
它们是复合格式的索引组件和对齐组件。这是复合格式语法;
{index[,alignment][:formatString]}
在您的情况下,{0,-12}
和 {1,12}
、 0
和 1
是索引组件,它指向您要格式化的前 2 个元素。-12
和12
是对齐组件。它们可以是负值或正值。
向右对齐,负值表示向左对齐。
如果要使用对齐组件,则必须用逗号将其与索引组件分隔。冒号 ( :
) 用formatString
分隔对齐组件,如您在语法上看到的那样。
由于您使用{0,-12}
表示"Los Angeles"
(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"
但
Console.WriteLine("{0, 12}{1}", "Chicago", "1940"); // prints " Chicago1940"
数字 ("N") 格式说明符
数字 ("N") 格式说明符将数字转换为形式"-d,ddd,ddd.ddd...",其中"-"表示负数符号(如果需要),"d"表示数字 (0-9),","表示组分隔符,"." 表示小数点符号。精度说明符指示小数点后所需的位数点。如果省略精度说明符,则小数位数places 由当前 NumberFormatInfo.NumberDecimalDigits 定义财产。
结果字符串受格式信息的影响的当前 NumberFormatInfo 对象。下表列出了控制结果格式的数字格式信息属性字符串。
对于 N0,实际输出将不包含小数点后的数字(如整数值)。
用空格对齐数字
要将浮点数与右对齐,请在结肠。键入逗号后跟多个空格,例如"0,10:0.0"(这只能在 String.Format 方法中使用,不能在 double 中使用。到字符串方法)。要向左对齐数字,请使用负数空格。