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

好的,这里是代码示例:

好的,这里是代码示例:

 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} 在字符串格式的参数之后逗号意味着什么?

11

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

每个格式项采用以下形式,并由以下组件组成:{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你已经知道(例如The Numeric ("N") Format Specifier)。

4

它们是索引组件对齐组件,它是Composite Formatting的一部分。

{index[,alignment][:formatString]}

在您的情况下,{0,-12}{1,12}01是索引组件,指向您要格式化的前 2 个元素。-1212是对齐组件。它们可以是负值或正值。

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

如果要使用对齐组件,则必须用逗号将其与索引组件分开。如语法所示,冒号(:)用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"
1
The Numeric ("N") Format Specifier

numeric ("N") 格式说明符将数字转换为 "-d,ddd,ddd..." 形式的字符串,其中 "-" 表示负数符号 (如果需要),"d" 表示数字 (0-9),"," 表示组分隔符,"." 表示小数点符号。精度说明符表示小数点后所需的位数。

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

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

Align numbers with spaces

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

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(911)
字符串编码器到固定大小的输出(string encoder)
上一篇
使用JavaLocalDate从当前日期减去会计年度季度
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(35条)