C#使用Format进行数据格式化

2012-03-26 21:13:56|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C#, 字符处理|来源:唯设编程网

最近的C#项目需要对double,int等数据类型格式化输出,所以用到了Format方法进行数据格式化。C#使用Format进行数据格式化非常方便,但是前提你得了解Format格式化参数的意义,本文对其进行总结,以备后用。

1. 基本的格式化方法参数列表:

字符

说明

示例

输出

C 货币 string.Format("{0:C3}", 2) $2.000
D 十进制 string.Format("{0:D3}", 2) 002
E 科学计数法 1.20E+001 1.20E+001
G 常规 string.Format("{0:G}", 2) 2
N 用分号隔开的数字 string.Format("{0:N}", 250000) 250,000.00
X 十六进制 string.Format("{0:X000}", 12) C
    string.Format("{0:000.000}", 12.2) 012.200

2. Format方法格式化时对齐方式的控制:

例子 效果
String.Format("->{1,10}<-", "Hello"); -> Hello<-
String.Format("->{1,-10}<-", "Hello"); ->Hello <-

3. 基本型数据格式化定义:

字符 意义 用法

输出
(测试数据:
Double 1.42)

输出
(测试数据:
Int -12400)
c 货币 {0:c} $1.42 -$12,400
d Decimal (Whole number) {0:d} System.
FormatException
-12400
e 科学计数法 {0:e} 1.420000e+000 -1.240000e+004
f 固定小数位数 {0:f} 1.42 -12400.00
g 普通 {0:g} 1.42 -12400
n 每三位用","分隔 {0:n} 1.42 -12,400
r Round trippable {0:r} 1.42 System.
FormatException
x 16进制 {0:x4} System.
FormatException
cf90

4. 自定义数据格式化:

字符 意义 用法 输出(测试数据:Double 1500.42) 说明
0 0占位 {0:00.0000} 1500.4200 Pads with zeroes.
# Digit placeholder {0:(#).##} (1500).42  
. 小数样式 {0:0.0} 1500.4  
, 千位分隔 {0:0,0} 1,500 Must be between two zeroes.
,. 数字放大 {0:0,.} 2 Comma adjacent to Period scales by 1000.
% 百分数 {0:0%} 150042% Multiplies by 100, adds % sign.
e 科学计数定义 {0:00e+0} 15e+2 Many exponent formats available.
; Group separator see below    

The group separator is especially useful for formatting currency values which require that negative values be enclosed in parentheses. This currency formatting example at the bottom of this document makes it obvious:

5. 日期/时间格式化

需要注意的是日期/时间格式化结果与系统设置有关:

字符 解释 例子(测试系统当前时间)
d 短日期 10/12/2002
D 长日期 December 10, 2002
t 短时间 10:11 PM
T 长时间 10:11:29 PM
f 完整的日期和时间 December 10, 2002 10:11 PM
F 完整的日期和时间(长类型输出) December 10, 2002 10:11:29 PM
g 默认的日期和时间 10/12/2002 10:11 PM
G 默认的日期和时间(长类型输出) 10/12/2002 10:11:29 PM
M 月日样式 December 10
r RFC1123日期字符串 Tue, 10 Dec 2002 22:11:29 GMT
s 短日期字符串 2002-12-10T22:11:29
u Universal sortable, local time 2002-12-10 22:13:50Z
U Universal sortable, GMT December 11, 2002 3:13:50 AM
Y 年月样式 December, 2002

The 'U' specifier seems broken; that string certainly isn't sortable.

6. 自定义日期格式化:

Specifier Type Example Example Output
dd Day {0:dd} 10
ddd Day name {0:ddd} Tue
dddd Full day name {0:dddd} Tuesday
f, ff, ... Second fractions {0:fff} 932
gg, ... Era {0:gg} A.D.
hh 2 digit hour {0:hh} 10
HH 2 digit hour, 24hr format {0:HH} 22
mm Minute 00-59 {0:mm} 38
MM Month 01-12 {0:MM} 12
MMM Month abbreviation {0:MMM} Dec
MMMM Full month name {0:MMMM} December
ss Seconds 00-59 {0:ss} 46
tt AM or PM {0:tt} PM
yy Year, 2 digits {0:yy} 02
yyyy Year {0:yyyy} 2002
zz Timezone offset, 2 digits {0:zz} -05
zzz Full timezone offset {0:zzz} -05:00
: Separator {0:hh:mm:ss} 10:43:20
/ Separator {0:dd/MM/yyyy} 10/12/2002

 

7. Enumerations

Specifier Type
g Default (Flag names if available, otherwise decimal)
f Flags always
d Integer always
x Eight digit hex.

8. 一些具有代表性的实例:

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

如果value的值是1243.50,将会输出"$1,240.00"。除非value的值为负数,否则将会输出相同的样式,如果value的值是0,将会输出字符串"Zero"。

String.Format("{0:(###) ###-####}", 18005551212);

这句代码执行以后将会输出 "(800) 555-1212"。

9.变量使用带参数的ToString()方法

数字类型转换转为字符串

12345.ToString("n"); //生成 12,345.00
12345.ToString("C"); //生成 ¥12,345.00
12345.ToString("e"); //生成 1.234500e+004
12345.ToString("f4"); //生成 12345.0000
12345.ToString("x"); //生成 3039 (16进制)
12345.ToString("p"); //生成 1,234,500.00%

到此,C#使用Format进行格式化的用法便总结完成了,希望对你有用,同时也在此感谢提供原稿的作者。

发表评论0条 】
网友评论(共?条评论)..
C#使用Format进行数据格式化