C# 字符串格式化


在C#中格式化字符串

簡介

在編寫C#程序的過程中經常需要輸出特定格式的字符串,因此要對需要輸出的對象進行格式化。

正文

每個對象都有一個ToString方法用來返回這個對象的字符串形式的呈現。ToString方法能接收一個字符串參數,告訴對象怎樣格式化它自己。 String.Format的調用中,格式化字符串放在后面的位置,例如“{0:##}”。大括號里的文本是{index[,alignment][:formatString]}。如果alignment是正的,則文本在給出文本空間中右對齊。如果alignment是負的,則左對齊。

1. 字符串Strings

Sample Generates
String.Format(”->{1,10}<-”, “Hello”); -> Hello<-
String.Format(”->{1,-10}<-”, “Hello”); ->Hello <-

2. 數值Numbers

基本數字格式說明符:

Specifier Type Format Output (Passed Double 1.42) Output (Passed Int -12400)
c Currency {0:c} $1.42 -$12,400
d Decimal (Whole number) {0:d} System.FormatException -12400
e Scientific {0:e} 1.420000e+000 -1.240000e+004
f Fixed point {0:f} 1.42 -12400.00
g General {0:g} 1.42 -12400
n Number with commas for thousands {0:n} 1.42 -12,400
r Round trippable {0:r} 1.42 System.FormatException
x Hexadecimal {0:x4} System.FormatException cf90

自定義數值格式:

Specifier Type Example Output (Passed Double 1500.42) Note
0 Zero placeholder {0:00.0000} 1500.4200 Pads with zeroes.
# Digit placeholder {0:(#).##} (1500).42
. Decimal point {0:0.0} 1500.4
, Thousand separator {0:0,0} 1,500 Must be between two zeroes.
,. Number scaling {0:0,.} 2 Comma adjacent to Period scales by 1000.
% Percent {0:0%} 150042% Multiplies by 100, adds % sign.
e Exponent placeholder {0:00e+0} 15e+2 Many exponent formats available.
; Group separator see below

在格式化貨幣值時,如果要求負數值放在圓括號里,則分號非常有用。貨幣值格式化的例子在本文的底部說明。

3. 日期Dates

記住日期的格式化尤其依賴於系統的區域設置;下面的示例字符串來自我的本地區域設置。

Specifier Type Example(Passed System.DateTime.Now)
d Short date 10/12/2002
D Long date December 10, 2002
t Short time 10:11 PM
T Long time 10:11:29 PM
f Full date & time December 10, 2002 10:11 PM
F Full date & time (long) December 10, 2002 10:11:29 PM
g Default date & time 10/12/2002 10:11 PM
G Default date & time (long) 10/12/2002 10:11:29 PM
M Month day pattern December 10
r RFC1123 date string Tue, 10 Dec 2002 22:11:29 GMT
s Sortable date string 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 Year month pattern December, 2002

“U”說明符看起來像損壞似得,這個字符串肯定不能排序的。

自定義日期格式:

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

4. 枚舉Numerations

Specifier Type 翻譯
g Default (Flag names if available, otherwise decimal) 默認(如果能獲得枚舉標志名,則返回標志名,否則返回十進制數
f Flags always 總是返回枚舉標志名
d Integer always 總是返回整型
x Eight digit hex. 總是返回八位的十六進制數

5. 一些有用的示例

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

上面代碼如果傳入1243.50將輸出 “$1,240.00″ 。如果傳入負數,則輸出相同的格式,不同的是帶括號。如果傳入0則輸出0.

String.Format(”{0:(###) ###-####}”, 8005551212);

上面代碼將輸出 “(800) 555-1212″.

6. ToString的用法如下

字符串格式符號 說明 代碼示例 輸出
C 貨幣 2.5.ToString(“C”) ¥2.50
D 十進制 25.ToString(“D5”) 00025
E 科學計數法 25000.ToString(“E”) 2.500000E+005
F 固定小數點位數 25.ToString(“F2”) 25.00
G 常規 2.5.ToString(“G”) 2.5
N 數值 2500000.ToString(“N”) 2,500,000.00
X 十六進制 255.ToString(“X”) FF

翻譯自

http://blog.csdn.net/21aspnet/article/details/1534643


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM