字符串格式化

标准数字格式字符串:

http://msdn.microsoft.com/zh-cn/library/dwhawy9k.aspx

1、 货币格式:

跟系统的环境有关,中文系统默认格式化人民币(),英文系统格式化美元($)

           //默认保留2位小数点:
            Console.WriteLine(string.Format("结果:{0:C}"0.28));
            //结果:¥0.28

            
//指定小数点位数:
            Console.WriteLine(string.Format("结果:{0:C1}"0.2));
            //结果:¥0.2
            Console.WriteLine(string.Format("结果:{0:C2}"0.28));
            //结果:¥0.28
            Console.WriteLine(string.Format("结果:{0:C3}"0.287));
            //结果:¥0.287

            
//四舍五入:
            Console.WriteLine(string.Format("结果:{0:C1}"0.28));
            //结果:¥0.3
            Console.WriteLine(string.Format("结果:{0:C1}"0.23));
            //结果:¥0.2

            
//指定区域信息:
            Console.WriteLine(string.Format(CultureInfo.CreateSpecificCulture("zh-CHS"), "结果:{0:C}"12345.6789));
            //结果:¥12,345.68
            Console.WriteLine(string.Format(CultureInfo.CreateSpecificCulture("en-US"), "结果:{0:C}"12345.6789));
            //结果:$12,345.68

 

2、 整数格式:数值为小数等非整数格式会抛出异常。

 

            //默认1位整数:
            Console.WriteLine(string.Format("结果:{0:D}"123));
            //结果:123
            
//指定位数:
            Console.WriteLine(string.Format("结果:{0:D5}"123));
            //结果:00123
            Console.WriteLine(string.Format("结果:{0:D5}"1234567));
            //结果:1234567
            Console.WriteLine(string.Format("{0:D5}", -123));
            //结果:-00123
            Console.WriteLine(string.Format("结果:{0:D5}", -1234567));
            //结果:-1234567

 

自定义数字格式:

http://msdn.microsoft.com/zh-cn/library/0c899ak8(v=VS.100).aspx

1、零占位符:

            Console.WriteLine(string.Format("结果:{0:000}"12345));
            //结果:12345
            Console.WriteLine(string.Format("结果:{0:000000}"123));
            //结果:000123
            Console.WriteLine(string.Format("结果:{0:000.000}"5.2));
            //结果:005.200

  

2、数字占位符:

            Console.WriteLine(string.Format("结果:{0:###}"12345));
            //结果:12345
            Console.WriteLine(string.Format("结果:{0:######}"123));
            //结果:123
            Console.WriteLine(string.Format("结果:{0:###.###}"5.2));
            //结果:5.2

 

3、小数点:

            Console.WriteLine(string.Format("结果:{0:0.0}"1.2));
            //结果:1.2
            Console.WriteLine(string.Format("结果:{0:000.000}"1.2));
            //结果:001.200
            Console.WriteLine(string.Format("结果:{0:#.#}"1.2));
            //结果:1.2
            Console.WriteLine(string.Format("结果:{0:###.###}"1.2));
            //结果:1.2

 

4、千位分隔符和数字比例换算符:

            //千位分隔符:不管格式如何,以千位为分隔(小数此格式无效)
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:#,#}"1234567));
            //结果:1,234,567
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0,0}"1234567));
            //结果:1,234,567
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:##,####,####}"1234567));
            //结果:1,234,567
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:00,0000,0000}"1234567));//格式超出位数补0
            
//结果:0,001,234,567

 

 

            //数字比例换算符:每个逗号代表省略千位,必须从最右边开始的一个或多个连续逗号才有效(小数此格式无效)。
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:#,}"1234567890));
            //结果:1234568
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0,}"1234567890));
            //结果:1234568
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:#,,}"1234567890));
            //结果:1235
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0,,}"1234567890));
            //结果:1235
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:###,,,}"1234567890));
            //结果:1
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:000,,,}"1234567890));
            //结果:001
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:###,,,,}"1234567890));
            //结果:
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:000,,,,}"1234567890));
            //结果:000

 

            //混合2种格式:
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:#,#,,}"1234567890));
            //结果:1,235
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0,0,,}"1234567890));
            //结果:1,235
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:####,####,,}"1234567890));
            //结果:1,235
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0000,0000,,}"1234567890));
            //结果:00,001,235

 

5、科学记数法: 格式字符串中“E”、“E+”、“E-”、“e”、“e+”或“e-”后面紧跟至少一个“0”字符,用于保存指数值。对于多位数的指数值,有几位数就用几个0来替换;对于格式字符串中超过指数位数的0,在结果集中还是以0表示。

            //指数位数:
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0E+0}"30));
            //结果:3E+1
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0E+0}"3000));
            //结果:3E+3
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0E+000}"30));
            //结果:3E+001
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0E+000}"300000000000));
            //结果:3E+011

            
//科学记数法用0占位符或小数点来定位:
            
//正指数:
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0.00E+0}"30));
            //结果:3.00E+1
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0.##E+0}"30));//#被忽略
            
//结果:3E+1
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:#.##E+0}"30));//小数点定位
            
//结果:3E+1
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:00E+0}"3000));
            //结果:30E+2
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0#E+0}"3000));//#不被忽略
            
//结果:30E+2

            
//负指数:
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:000E+0}"30));//30是2位数不够位数匹配字符格式000的3位数,E+被程序自动改为E-
            
//结果:300E-1
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:00000E-0}"30));
            //结果:30000E-3

 

6、百分比占位符:

 

            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:#%}"0.1264));//只取2位数,省略部分四舍五入
            
//结果:13%
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0.00%}"0.1234));
            //结果:12.34%
            Console.WriteLine(string.Format(CultureInfo.InvariantCulture, "结果:{0:0.00%}"0.12345));//省略部分四舍五入
            
//结果:12.35%

 

7、转义符:字符串格式符号用作普通字符用转义符“\” 反斜杠“\”进行转义 \\”。

8、部分分隔符:

部分数目

说明

一个部分

格式字符串应用于所有值。

两个部分

第一部分应用于正值和零,第二部分应用于负值。

如果要设置格式的数字为负,但根据第二部分中的格式舍入后为零,则最终的零根据第一部分进行格式设置。

三个部分

第一部分应用于正值,第二部分应用于负值,第三部分应用于零。

第二部分可以留空(分号间没有任何内容),在这种情况下,第一部分应用于所有非零值。

如果要设置格式的数字为非零值,但根据第一部分或第二部分中的格式舍入后为零,则最终的零根据第三部分进行格式设置。

 

           Console.WriteLine(string.Format("结果:{0:##;(##)}"22));
            //结果:22
            Console.WriteLine(string.Format("结果:{0:##;(##)}", -22));
            //结果:(22)

            Console.WriteLine(string.Format("结果:{0:##;(##);**Zero**}"22));
            //结果:22
            Console.WriteLine(string.Format("结果:{0:##;(##);**Zero**}", -22));
            //结果:(22)
            Console.WriteLine(string.Format("结果:{0:##;(##);**Zero**}"0));
            //结果:**Zero**

 

标准日期和时间格式字符串:

http://msdn.microsoft.com/zh-cn/library/az4se3k1.aspx

           Console.WriteLine(string.Format(CultureInfo.CreateSpecificCulture("zh-CN"), "结果:{0:G}", DateTime.Now));
            //结果:2012-1-2 17:35:34
            Console.WriteLine(string.Format(CultureInfo.CreateSpecificCulture("en-US"), "结果:{0:G}", DateTime.Now));
            //结果:1/2/2012 5:35:34 PM

 

自定义日期和时间格式字符串:

http://msdn.microsoft.com/zh-cn/library/8kb3ddd4.aspx

            //12小时制:
            Console.WriteLine(string.Format("结果:{0:yy-M h:m:s}", DateTime.Now));
            //结果:12-1 5:51:56
            Console.WriteLine(string.Format("结果:{0:yyyy-MM hh:mm:ss}", DateTime.Now));
            //结果:2012-01 05:51:56

            
//24小时制:
            Console.WriteLine(string.Format("结果:{0:yy-M H:m:s}", DateTime.Now));
            //结果:12-1 17:51:56
            Console.WriteLine(string.Format("结果:{0:yyyy-MM HH:mm:ss}", DateTime.Now));
            //结果:2012-01 17:51:56

 

 

 

 

posted on 2012-01-02 18:20  逆寒  阅读(405)  评论(0)    收藏  举报

导航