C#格式化字符串

来源:互联网 发布:淘宝满减券漏洞 编辑:程序博客网 时间:2024/05/01 13:35
字符串格式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 或cCurrency 货币格式D或dDecimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了)E或eExponent 指数格式F或fFixed point 固定精度格式G 或gGeneral 常用格式N或n用逗号分割千位的数字,比如1234将会被变成1,234P或pPercentage 百分符号格式R 或rRound-trip 圆整(只用于浮点数)保证一个数字被转化成字符串以后可以再被转回成同样的数字X 或xHex 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

 

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

符号名称含义00 占位符用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  DMM/dd/yyyyShortDatePattern(短日期模式)Ddddd,MMMM dd,yyyy LongDatePattern(长日期模式)Fdddd,MMMM dd,yyyy HH:mmFull date and time (long date and short time)(全日期和时间模式)Fdddd,MMMM dd,yyyy HH:mm:ssFullDateTimePattern (long date and long time)(长日期和长时间)GMM/dd/yyyy HH:mmGeneral (short date and short time)(通用模式,短日期和短时间)GMM/dd/yyyy HH:mm:ssGeneral (short date and long time)(通用模式,短日期和长时间)M,MMMMM ddMonthDayPattern(月天模式)r,Rddd,dd MMM yyyy,HH':'mm':'ss 'GMT'RFC1123Pattern (RFC1123模式)Syyyy-MM-dd HH:mm:ssSortableDateTimePattern (conforms to ISO 8601) using local time(使用本地时间的可排序模式)THH:mmShortTimePattern (短时间模式)THH:mm:ssLongTimePattern(长时间模式)Uyyyy-MM-dd HH:mm:ssUniversalSortable-DateTimePattern (conforms to ISO 8601) using universal time(通用可排序模式)Udddd,MMMM dd,yyyy,HH:mm:ssUniversalSortable-DateTimePattern(通用可排序模式)y,YMMMM,yyyyYearMonthPattern(年月模式)
0 0
原创粉丝点击