2012-03-26 21:13:56|?次阅读|上传:wustguangh【已有?条评论】发表评论
最近的C#项目需要对double,int等数据类型格式化输出,所以用到了Format方法进行数据格式化。C#使用Format进行数据格式化非常方便,但是前提你得了解Format格式化参数的意义,本文对其进行总结,以备后用。
字符 |
说明 |
示例 |
输出 |
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 |
例子 | 效果 |
String.Format("->{1,10}<-", "Hello"); | -> Hello<- |
String.Format("->{1,-10}<-", "Hello"); | ->Hello <- |
字符 | 意义 | 用法 |
输出 |
输出 (测试数据: 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 |
字符 | 意义 | 用法 | 输出(测试数据: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:
需要注意的是日期/时间格式化结果与系统设置有关:
字符 | 解释 | 例子(测试系统当前时间) |
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.
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 |
Specifier | Type |
g | Default (Flag names if available, otherwise decimal) |
f | Flags always |
d | Integer always |
x | Eight digit hex. |
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"。
数字类型转换转为字符串
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进行格式化的用法便总结完成了,希望对你有用,同时也在此感谢提供原稿的作者。