C#格式化字符串

    字符串格式String.Format和WriteLine都遵守同样的格式化规则。格式化的格式如下:

    "{ N [, M ][: formatString ]}", arg1, ... argN}

    在这个格式中:

    1) N是从0开始的整数,表示要格式化的参数的个数

     2) M是一个可选的整数,决定了格式化字符串的宽度和对齐方向:表示格式化后的参数所占的宽度,如果M是负数,那么格式化后的值就是左对齐的,如果M是正数, 那么格式化后的值是右对齐的

    3) formatString是另外一个可选的参数,决定了如何格式化数据,比如用货币符号,科学计数法或者16进制。表示格式代码argN表示要格式化的表 达式,和N是对应的。如果argN是空值,那么就用一个空字符串来 代替。如果没有formatString,那么就用参数N对应的ToString方法来格式化。下面的语句会产生同样的输出:

publicclassTestConsoleApp
{
   publicstaticvoidMain(string[]args)
  {
     Console.WriteLine(123);
    Console.WriteLine("{0}",123);
     Console.WriteLine("{0:D3}",123);
  }
}

     格式标识符号共有9种,它们代表了大多数常用的数字格式。就像下表所示:

字母 含 义
C 或c Currency 货币格式
D或d Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)
E或e Exponent 指数格式
F或f Fixed point 固定精度格式
G 或g General 常用格式
N或n 用逗号分割千位的数字,比如1234将会 被变成1,234
P或p Percentage 百分符号格式
R 或r Round-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字
X 或x Hex 16进制格式

如果我们使用下面的表达 方式,让我们看看会发生什么

publicclassFormatSpecApp
{
   publicstaticvoidMain(string[]args)
  {
    inti=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

     如果标准格式化标识符还不能满足你。你可以使用图形化格式字符串来创建定制的字符串输出。图形化格式化使用占位符来表示最小位数,最大位数,定位符 号,负 号的外观以及其它数字符号的外观。就像下表所示

符号 名称 含义
0 0 占位符 用0填充不足的位数
# 数字占位符 用#代替实际的位数
. 十 进制小数点
, 千位分隔符 用逗号进行千位分割,比如 把 1000分割成1,000
% 百分符号 显示一个百分标识
E+0E-0e+0e-0 指 数符号 用指数符号格式化输出

专一字符 用于传统格式 的格式化 序列,比如"n"(新行)
'ABC'"ABC" 常量字符串 显示单引号或者双引 号里面的字符串
; 区域分隔符 如果数字会被格式化成整数,负数,或者0,用;来 进行分隔
,. 缩放符号 数字除以1000

看 下面的例子:

      doublei=123456.42;
      Console.WriteLine();
       Console.WriteLine("{0:000000.00}",i);//123456.42
       Console.WriteLine("{0:00.00000000e+0}",i);//12.34564200e+4
       Console.WriteLine("{0:0,.}",i);     //123
       Console.WriteLine("{0:#0.000}",i);      //123456.420
       Console.WriteLine("{0:#0.000;(#0.000)}",i);    //123456.420
       Console.WriteLine("{0:#0.000;(#0.000);<zero>}",i);//123456.420
       Console.WriteLine("{0:#%}",i);  //12345642%
      i=-123456.42;
       Console.WriteLine();
       Console.WriteLine("{0:000000.00}",i);//-123456.42
       Console.WriteLine("{0:00.00000000e+0}",i);//-12.34564200e+4
       Console.WriteLine("{0:0,.}",i);     //-123
       Console.WriteLine("{0:#0.000}",i);      //-123456.420
       Console.WriteLine("{0:#0.000;(#0.000)}",i);    //(123456.420)
       Console.WriteLine("{0:#0;(#0);<zero>}",i);//(123456)
       Console.WriteLine("{0:#%}",i);      //-12345642%
      i=0;
       Console.WriteLine();
      Console.WriteLine("{0:0,.}",i);     //0
       Console.WriteLine("{0:#0}",i);      //0
       Console.WriteLine("{0:#0;(#0)}",i);    //0
       Console.WriteLine("{0:#0;(#0);<zero>}",i);//<zero>
       Console.WriteLine("{0:#%}",i);      //%

    日期格式 化

D

D MM/dd/yyyy ShortDatePattern(短 日期模式)
D dddd,MMMM dd,yyyy  LongDatePattern(长 日期模式)
F dddd,MMMM dd,yyyy HH:mm Full date and time (long date and short time)(全日期和时间模式)
F dddd,MMMM dd,yyyy HH:mm:ss FullDateTimePattern (long date and long time)(长日期和长时间)
G MM/dd/yyyy HH:mm General (short date and short time)(通用模式,短日期和短时间)
G MM/dd/yyyy HH:mm:ss General (short date and long time)(通用模式,短日期和长时间)
M,M MMMM dd MonthDayPattern(月天模式)
r,R ddd,dd MMM yyyy,HH':'mm':'ss 'GMT' RFC1123Pattern (RFC1123模式)
S yyyy-MM-dd HH:mm:ss SortableDateTimePattern (conforms to ISO 8601) using local time(使用本地时间的可排序模式)
T HH:mm ShortTimePattern (短时间模式)
T HH:mm:ss LongTimePattern(长时间 模式)
U yyyy-MM-dd HH:mm:ss UniversalSortable-DateTimePattern (conforms to ISO 8601) using universal time(通用可排序模式)
U dddd,MMMM dd,yyyy,HH:mm:ss UniversalSortable-DateTimePattern(通用可排序模式)
y,Y MMMM,yyyy YearMonthPattern(年 月模式)

猜你喜欢

转载自blog.csdn.net/alwaysrun/article/details/5667184
今日推荐