字符串样式的格式化
?
下表描述了用來格式化 DateTime 對象的標(biāo)準(zhǔn)格式說明符。
格式說明符 名稱 說明
d 短日期模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.ShortDatePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
D 長日期模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.LongDatePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
t 短時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.ShortTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
T 長時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.LongTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
f 完整日期/時間模式(短時間) 顯示長日期和短時間模式的組合,由空格分隔。
F 完整日期/時間模式(長時間) 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.FullDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。
g 常規(guī)日期/時間模式(短時間) 顯示短日期和短時間模式的組合,由空格分隔。
G 常規(guī)日期/時間模式(長時間) 顯示短日期和長時間模式的組合,由空格分隔。
M 或 m 月日模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.MonthDayPattern 屬性定義的模式或者由指定格式提供程序定義的模式。
R 或 r RFC1123 模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.RFC1123Pattern 屬性定義的模式或者由指定格式提供程序定義的模式。這是定義的標(biāo)準(zhǔn),并且屬性是只讀的;因此,無論所使用的區(qū)域性或所提供的格式提供程序是什么,它總是相同的。屬性引用 CultureInfo.InvariantCulture 屬性并遵照自定義模式“ddd, dd MMM yyyy HH:mm:ss G"MT”。請注意,“GMT”中的“M”需要轉(zhuǎn)義符,因此它不被解釋。格式化并不修改 DateTime 的值,所以您必須在格式化之前將值調(diào)整為 GMT。
s 可排序的日期/時間模式;符合 ISO 8601 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.SortableDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。屬性引用 CultureInfo.InvariantCulture 屬性,格式遵照自定義模式“yyyy-MM-ddTHH:mm:ss”。
u 通用的可排序日期/時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.UniversalSortableDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。因為它是定義的標(biāo)準(zhǔn),并且屬性是只讀的,因此無論區(qū)域性或格式提供程序是什么,模式總是相同的。格式化遵照自定義模式“yyyy-MM-dd HH:mm:ssZ”。格式化日期和時間時不進(jìn)行時區(qū)轉(zhuǎn)換;所以,請在使用格式說明符之前將本地日期和時間轉(zhuǎn)換為通用時間。
U 通用的可排序日期/時間模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.FullDateTimePattern 屬性定義的模式或者由指定格式提供程序定義的模式。請注意,顯示的時間是通用時間,而不是本地時間。
Y 或 y 年月模式 顯示由與當(dāng)前線程關(guān)聯(lián)的 DateTimeFormatInfo.YearMonthPattern 屬性定義的模式或者由指定格式提供程序定義的模式。
任何其他單個字符 未知說明符
====================================================
下表描述了標(biāo)準(zhǔn)數(shù)字格式字符串。請注意,這些格式說明符產(chǎn)生的輸出字符串受“區(qū)域選項”控制面板中的設(shè)置的影響。使用不同設(shè)置的計算機(jī)會生成不同的輸出字符串。
格式說明符 名稱 說明
C 或 c 貨幣 數(shù)字轉(zhuǎn)換為表示貨幣金額的字符串。轉(zhuǎn)換由用于格式化數(shù)字的 NumberFormatInfo 對象的貨幣格式信息控制。精度說明符指示所需的小數(shù)位數(shù)。如果省略精度說明符,則使用 NumberFormatInfo 給定的默認(rèn)貨幣精度。
D 或 d 十進(jìn)制 只有整型才支持此格式。數(shù)字轉(zhuǎn)換為十進(jìn)制數(shù)字 (0-9) 的字符串,如果數(shù)字為負(fù),則前面加負(fù)號。精度說明符指示結(jié)果字符串中所需的最少數(shù)字個數(shù)。如果需要的話,則用零填充該數(shù)字的左側(cè),以產(chǎn)生精度說明符給定的數(shù)字個數(shù)。
E 或 e 科學(xué)計數(shù)法(指數(shù)) 數(shù)字轉(zhuǎn)換為“-d.ddd...E+ddd”或“-d.ddd...e+ddd”形式的字符串,其中每個“d”表示一個數(shù)字 (0-9)。如果該數(shù)字為負(fù),則該字符串以減號開頭。小數(shù)點(diǎn)前總有一個數(shù)字。精度說明符指示小數(shù)點(diǎn)后所需的位數(shù)。如果省略精度說明符,則使用默認(rèn)值,即小數(shù)點(diǎn)后六位數(shù)字。格式說明符的大小寫指示在指數(shù)前加前綴“E”還是“e”。指數(shù)總是由正號或負(fù)號以及最少三位數(shù)字組成。如果需要,用零填充指數(shù)以滿足最少三位數(shù)字的要求。
F 或 f 固定點(diǎn) 數(shù)字轉(zhuǎn)換為“-ddd.ddd...”形式的字符串,其中每個“d”表示一個數(shù)字 (0-9)。如果該數(shù)字為負(fù),則該字符串以減號開頭。精度說明符指示所需的小數(shù)位數(shù)。如果忽略精度說明符,則使用 NumberFormatInfo 給定的默認(rèn)數(shù)值精度。
G 或 g 常規(guī) 根據(jù)數(shù)字類型以及是否存在精度說明符,數(shù)字會轉(zhuǎn)換為固定點(diǎn)或科學(xué)記數(shù)法的最緊湊形式。如果精度說明符被省略或為零,則數(shù)字的類型決定默認(rèn)精度,如下表所示。
Byte 或 SByte:3
Int16 或 UInt16:5
Int32 或 UInt32:10
Int64 或 UInt64:19
Single:7
Double:15
Decimal:29
如果用科學(xué)記數(shù)法表示數(shù)字時指數(shù)大于 -5 而且小于精度說明符,則使用固定點(diǎn)表示法;否則使用科學(xué)記數(shù)法。如果要求有小數(shù)點(diǎn),并且忽略尾部零,則結(jié)果包含小數(shù)點(diǎn)。如果精度說明符存在,并且結(jié)果的有效數(shù)字位數(shù)超過指定精度,則通過舍入刪除多余的尾部數(shù)字。使用科學(xué)記數(shù)法時,如果格式說明符是“G”,結(jié)果的指數(shù)帶前綴“E”;如果格式說明符是“g”,結(jié)果的指數(shù)帶前綴“e”。
上述規(guī)則有一個例外:如果數(shù)字是 Decimal 而且省略精度說明符時。在這種情況下總使用固定點(diǎn)表示法并保留尾部零。
N 或 n 數(shù)字 數(shù)字轉(zhuǎn)換為“-d,ddd,ddd.ddd...”格式的字符串,其中每個“d”表示一個數(shù)字 (0-9)。如果該數(shù)字為負(fù),則該字符串以減號開頭。小數(shù)點(diǎn)左邊每三個數(shù)字之間插入一個千位分隔符。精度說明符指示所需的小數(shù)位數(shù)。如果忽略精度說明符,則使用 NumberFormatInfo 給定的默認(rèn)數(shù)值精度。
P 或 p 百分比 數(shù)字轉(zhuǎn)換為由 NumberFormatInfo.PercentNegativePattern 屬性或 NumberFormatInfo.PercentPositivePattern 屬性定義的、表示百分比的字符串。如果數(shù)字為負(fù),則產(chǎn)生的字符串由 PercentNegativePattern 定義并以負(fù)號開頭。已轉(zhuǎn)換的數(shù)字乘以 100 以表示為百分比。精度說明符指示所需的小數(shù)位數(shù)。如果省略精度說明符,則使用 NumberFormatInfo 給定的默認(rèn)數(shù)值精度。
R 或 r 往返過程 往返過程說明符保證轉(zhuǎn)換為字符串的數(shù)值再次被分析為相同的數(shù)值。使用此說明符格式化數(shù)值時,首先用常規(guī)格式測試:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的數(shù)值,則使用常規(guī)格式說明符對其進(jìn)行格式化。但是,如果此值未被成功地分析為相同的數(shù)值,則它這樣格式化:Double 使用 17 位精度,Single 使用 9 位精度。雖然精度說明符可以追加到往返過程格式說明符,但它將被忽略。使用此說明符時,往返過程優(yōu)先于精度。此格式僅受浮點(diǎn)型支持。
X 或 x 十六進(jìn)制 數(shù)字轉(zhuǎn)換為十六進(jìn)制數(shù)字的字符串。格式說明符的大小寫指示對大于 9 的十六進(jìn)制數(shù)字使用大寫字符還是小寫字符。例如,使用“X”產(chǎn)生“ABCDEF”,使用“x”產(chǎn)生“abcdef”。精度說明符指示結(jié)果字符串中所需的最少數(shù)字個數(shù)。如果需要的話,則用零填充該數(shù)字的左側(cè),以產(chǎn)生精度說明符給定的數(shù)字個數(shù)。只有整型才支持此格式。
如果標(biāo)準(zhǔn)數(shù)字格式說明符未提供所需的格式化類型,可以使用自定義格式字符串進(jìn)一步增強(qiáng)字符串輸出。標(biāo)準(zhǔn)格式字符串包含一個字母字符,后面可能會跟有數(shù)字序列(形成一個 0 到 99 的值);而所有其他格式字符串都是自定義格式字符串。
下表顯示可以用于創(chuàng)建自定義數(shù)字格式字符串及其定義的字符。請注意,與當(dāng)前線程關(guān)聯(lián)的 NumberFormatInfo 對象的“區(qū)域選項”控制面板的設(shè)置會影響這些字符中的某些所產(chǎn)生的輸出字符串。使用不同區(qū)域性的計算機(jī)將生成不同的輸出字符串。
格式字符值說明
0零占位符如果格式化的值在格式字符串中出現(xiàn)“0”的位置有一個數(shù)字,則此數(shù)字被復(fù)制到輸出字符串中。小數(shù)點(diǎn)前最左邊的“0”的位置和小數(shù)點(diǎn)后最右邊的“0”的位置確定總在輸出字符串中出現(xiàn)的數(shù)字范圍。“00”說明符使得值被舍入到小數(shù)點(diǎn)前最近的數(shù)字,其中零位總被舍去。例如,用“00”格式化 34.5 將得到值 35。
#數(shù)字占位符如果格式化的值在格式字符串中出現(xiàn)“#”的位置有一個數(shù)字,則此數(shù)字被復(fù)制到輸出字符串中。否則,輸出字符串中的此位置不存儲任何值。請注意,如果“0”不是有效數(shù)字,此說明符永不顯示“0”字符,即使“0”是字符串中唯一的數(shù)字。如果“0”是所顯示的數(shù)字中的有效數(shù)字,則顯示“0”字符。“##”格式字符串使得值被舍入到小數(shù)點(diǎn)前最近的數(shù)字,其中零總被舍去。例如,用“##”格式化 34.5 將得到值 35。
.小數(shù)點(diǎn)格式字符串中的第一個“.”字符確定格式化的值中的小數(shù)點(diǎn)分隔符的位置;任何其他“.”字符被忽略。用作小數(shù)點(diǎn)分隔符的實際字符由控制格式化的 NumberFormatInfo 的 NumberDecimalSeparator 屬性確定。
,千位分隔符和數(shù)字比例換算“,”字符有兩種用途。首先,如果格式字符串在小數(shù)點(diǎn)(如果有)左邊的兩個數(shù)字占位符(0 或 #)之間包含“,”字符,則輸出將在小數(shù)點(diǎn)分隔符左邊的每三個數(shù)字之間插入千位分隔符。輸出字符串中用作小數(shù)點(diǎn)分隔符的實際字符由控制格式化的當(dāng)前 NumberFormatInfo 的 NumberGroupSeparator 屬性確定。
其次,如果格式字符串在緊鄰小數(shù)點(diǎn)的左側(cè)包含一個或多個“,”字符,則數(shù)字在格式化之前將被“,”字符數(shù)除然后乘以 1000。例如,格式字符串“0,,”將 100,000,000 簡單表示為 100。使用“,”字符指示比例換算在格式化數(shù)字中不包括千位分隔符。因此,若要將數(shù)字縮小 1,000,000 倍并插入千位分隔符,應(yīng)使用格式字符串“#,##0,,”。
%百分比占位符在格式字符串中出現(xiàn)“%”字符將導(dǎo)致數(shù)字在格式化之前乘以 100。適當(dāng)?shù)姆柌迦氲綌?shù)字本身在格式字符串中出現(xiàn)“%”的位置。使用的百分比字符由當(dāng)前的 NumberFormatInfo 類確定。
E0
E+0
E-0
e0
e+0
e-0科學(xué)計數(shù)法如果“E”、“E+”、“E-”、“e”、“e+”或“e-”中的任何一個字符串出現(xiàn)在格式字符串中,而且后面緊跟至少一個“0”字符,則數(shù)字用科學(xué)計數(shù)法來格式化,在數(shù)字和指數(shù)之間插入“E”或“e”。跟在科學(xué)計數(shù)法指示符后面的“0”字符數(shù)確定指數(shù)輸出的最小位數(shù)。“E+”和“e+”格式指示符號字符(正號或負(fù)號)應(yīng)總是置于指數(shù)前面。“E”、“E-”、“e”或“e-”格式指示符號字符僅置于負(fù)指數(shù)前面。
"轉(zhuǎn)義符在 C# 和 C++ 的托管擴(kuò)展中,反斜杠字符使格式字符串中的下一個字符被解釋為轉(zhuǎn)義序列。它與傳統(tǒng)的格式化序列一起使用,如“"n”(換行)。
在某些語言中,轉(zhuǎn)義符本身用作文本時必須跟在轉(zhuǎn)義符之后。否則,編譯器將該字符理解為轉(zhuǎn)義符。使用字符串“""”顯示“"”。
請注意,Visual Basic 中不支持此轉(zhuǎn)義符,但是 ControlChars 提供相同的功能。
'ABC'
"ABC"字符串引在單引號或雙引號中的字符被原樣復(fù)制到輸出字符串中,而且不影響格式化。
;部分分隔符“;”字符用于分隔格式字符串中的正數(shù)、負(fù)數(shù)和零各部分。
其他所有其他字符所有其他字符以文本形式復(fù)制到輸出字符串中它們出現(xiàn)的位置。
請注意,對于固定點(diǎn)格式字符串(不包含“E0”、“E+0”、“E-0”、“e0”、“e+0”或“e-0”的字符串),數(shù)字被舍入為與小數(shù)點(diǎn)右邊的數(shù)字占位符數(shù)目相同的小數(shù)位數(shù)。如果格式字符串不包含小數(shù)點(diǎn),數(shù)字被舍入為最接近的整數(shù)。如果數(shù)字位數(shù)多于小數(shù)點(diǎn)左邊數(shù)字占位符的個數(shù),多余的數(shù)字被復(fù)制到輸出字符串中緊挨著第一個數(shù)字占位符的前面。
可以根據(jù)值為正、為負(fù)還是為零來為字符串應(yīng)用不同的格式化。為產(chǎn)生這種行為,自定義格式字符串可以包含最多三個用分號分隔的部分:
一個部分:格式字符串應(yīng)用于所有值。
兩個部分:第一部分應(yīng)用于正值和零,第二部分應(yīng)用于負(fù)值。如果要格式化的數(shù)字為負(fù),但根據(jù)第二部分中的格式舍入后為零,則最終的零根據(jù)第一部分進(jìn)行格式化。
三個部分:第一部分應(yīng)用于正值,第二部分應(yīng)用于負(fù)值,第三部分應(yīng)用于零。第二部分可能為空(分號間沒有任何內(nèi)容),在這種情況下,第一部分應(yīng)用于所有非零值。如果要格式化的數(shù)字為非零值,但根據(jù)第一部分或第二部分中的格式舍入后為零,則最終的零根據(jù)第三部分進(jìn)行格式化。
格式化最終值時,此類型的格式化忽略所有先前存在的與數(shù)字關(guān)聯(lián)的格式化。例如,使用部分分隔符時,顯示的負(fù)值永遠(yuǎn)不帶負(fù)號。如果您希望格式化后的最終值帶有負(fù)號,則應(yīng)明確包含負(fù)號,讓它作為自定義格式說明符的組成部分。下面的示例闡釋如何使用部分分隔符產(chǎn)生格式化字符串。
======================================================
本文來源于yaosansi'Blog http://www.yaosansi.com/ , 原文地址:http://www.yaosansi.com/post/340.html
C#的String.Format格式化舉例
stringstr1 =string.Format("{0:N1}",56789);?????????????? //result: 56,789.0
stringstr2 =string.Format("{0:N2}",56789);?????????????? //result: 56,789.00
stringstr3 =string.Format("{0:N3}",56789);?????????????? //result: 56,789.000
stringstr8 =string.Format("{0:F1}",56789);?????????????? //result: 56789.0
stringstr9 =string.Format("{0:F2}",56789);?????????????? //result: 56789.00
stringstr11 =(56789 / 100.0).ToString("#.##");?????????? //result: 567.89
stringstr12 =(56789 / 100).ToString("#.##");???????????? //result: 567
C 或 c
貨幣
Console.Write("{0:C}", 2.5);?//$2.50
Console.Write("{0:C}", -2.5); //($2.50)
D 或 d
十進(jìn)制數(shù)
Console.Write("{0:D5}", 25);?//00025
E 或 e
科學(xué)型
Console.Write("{0:E}", 250000);?//2.500000E+005
F 或 f
固定點(diǎn)
Console.Write("{0:F2}", 25);?//25.00
Console.Write("{0:F0}", 25);?//25
G 或 g
常規(guī)
Console.Write("{0:G}", 2.5);?//2.5
N 或 n
數(shù)字
Console.Write("{0:N}", 2500000);?//2,500,000.00
X 或 x
十六進(jìn)制
Console.Write("{0:X}", 250);?//FA
Console.Write("{0:X}", 0xffff);?//FFFF
轉(zhuǎn)載于:https://www.cnblogs.com/kelebing/archive/2008/05/26/1207600.html
總結(jié)
- 上一篇: php try catch
- 下一篇: 用Telnet 来用smtp发邮件。。