字符串格式

格式化的格式如下:"{ N , M }", arg1, ... argN,在这个格式中

  • N是从0开始的整数,表示要格式化的参数的个数
  • M是一个可选的整数,表示格式化后的参数所占的宽度,如果M是负数,那么格式化后的值就是左对齐的,如果M是正数,那么格式化后的值是右对齐的
  • formatString是另外一个可选的参数,表示格式代码
  • (,M)决定了格式化字符串的宽度和对齐方向
  • (:formatString)决定了如何格式化数据,比如用货币符号,科学计数法或者16进制。

    int i = 123;
    string s1 = string.Format("{0:d6}", i);
    Console.WriteLine(s1);

    结果为:000123

Console.WriteLine("{0,5} {1,5}", 123, 456);      // 右对齐
Console.WriteLine("{0,-5} {1,-5}", 123, 456);    // 左对齐

输出是
123 456
123 456
也可以合并这些表达式,先放一个逗号,再放一个冒号。就像这样:

Console.WriteLine("{0,-10:D6} {1,-10:D6}", 123, 456);

输出是:
000123 000456

格式化标识符

字母含义
C或cCurrency 货币格式
D或dDecimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)
E或eExponent 指数格式
F或fFixed point 固定精度格式
G或gGeneral 常用格式
N或n用逗号分割千位的数字,比如1234将会被变成1,234
P或pPercentage 百分符号格式
R或rRound-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字
X或xHex 16进制格式
int i = 123456;
Console.WriteLine("{0:C}", i); // ¥123,456.00
Console.WriteLine("{0:D}", i); // 123456
Console.WriteLine("{0:E}", i); // 1.234560E+005
Console.WriteLine("{0:F}", i); // 123456.00
Console.WriteLine("{0:G}", i); // 123456
Console.WriteLine("{0:N}", i); // 123,456.00
Console.WriteLine("{0:P}", i); // 12,345,600.00 %
Console.WriteLine("{0:X}", i); // 1E240

精度控制标识控制了有效数字的个数或者十进制数小数的位数。

Console.WriteLine("{0:C5}", i); // ¥123,456.00
Console.WriteLine("{0:D5}", i); // 123456
Console.WriteLine("{0:E5}", i); // 1.23456E+005
Console.WriteLine("{0:F5}", i); // 123456.00000
Console.WriteLine("{0:G5}", i); // 1.23456E5
Console.WriteLine("{0:N5}", i); // 123,456.00000
Console.WriteLine("{0:P5}", i); // 12,345,600.00000 %
Console.WriteLine("{0:X5}", i); // 1E240