C# 格式化字符串總結

本文內容節選自MSDN
摘要:
 

標準 DateTime 格式字符串

 

標準 DateTime 格式字符串包含一個標準 DateTime 格式說明符字符,該字符表示自定義 DateTime 格式字符串。格式字符串最終定義由格式化操作產生的 DateTime 對象的文本表示形式。請注意,任何包含一個以上字母字符(包括空白)的 DateTime 格式字符串都被解釋爲自定義 DateTime 格式字符串。

標準 DateTime 格式說明符

下表描述了標準 DateTime 格式說明符。有關各格式說明符所產生輸出的示例,請參見標準 DateTime 格式字符串輸出示例

格式說明符名稱說明

d

短日期模式

表示由當前 ShortDatePattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“MM/dd/yyyy”。

D

長日期模式

表示由當前 LongDatePattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“dddd, dd MMMM yyyy”。

f

完整日期/時間模式(短時間)

表示長日期 (D) 和短時間 (t) 模式的組合,由空格分隔。

F

完整日期/時間模式(長時間)

表示由當前 FullDateTimePattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“dddd, dd MMMM yyyy HH:mm:ss”。

g

常規日期/時間模式(短時間)

表示短日期 (d) 和短時間 (t) 模式的組合,由空格分隔。

G

常規日期/時間模式(長時間)

表示短日期 (d) 和長時間 (T) 模式的組合,由空格分隔。

M 或 m

月日模式

表示由當前 MonthDayPattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“MMMM dd”。

o

往返日期/時間模式

表示使用保留時區信息的模式的自定義 DateTime 格式字符串。該模式專用於往返 DateTime 格式(包括文本形式的 Kind 屬性)。隨後將 ParseParseExact 與正確的 Kind 屬性值一起使用可以對格式化的字符串進行反向分析。

自定義格式字符串爲“yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK”。

用於此說明符的模式是定義的標準。因此,無論所使用的區域性或所提供的格式提供程序是什麼,它總是相同的。

R 或 r

RFC1123 模式

表示由當前 RFC1123Pattern 屬性定義的自定義 DateTime 格式字符串。該模式是定義的標準,並且屬性是隻讀的。因此,無論所使用的區域性或所提供的格式提供程序是什麼,它總是相同的。

定義格式字符串爲“ddd, dd MMM yyyy HH':'mm':'ss 'GMT'”。

格式化不會修改正在格式化的 DateTime 對象的值。因此,應用程序在使用此格式說明符之前必須將該值轉換爲協調世界時 (UTC)。

s

可排序的日期/時間模式;符合 ISO 8601

表示由當前 SortableDateTimePattern 屬性定義的自定義 DateTime 格式字符串。此模式是定義的標準,並且屬性是隻讀的。因此,無論所使用的區域性或所提供的格式提供程序是什麼,它總是相同的。

自定義格式字符串爲“yyyy'-'MM'-'dd'T'HH':'mm':'ss”。

t

短時間模式

表示由當前 ShortTimePattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“HH:mm”。

T

長時間模式

表示由當前 LongTimePattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“HH:mm:ss”。

u

通用的可排序日期/時間模式

表示由當前 UniversalSortableDateTimePattern 屬性定義的自定義 DateTime 格式字符串。此模式是定義的標準,並且屬性是隻讀的。因此,無論所使用的區域性或所提供的格式提供程序是什麼,它總是相同的。

自定義格式字符串爲“yyyy'-'MM'-'dd HH':'mm':'ss'Z'”。

格式化日期和時間時不進行時區轉換。因此,應用程序在使用此格式說明符之前必須將本地日期和時間轉換爲協調世界時 (UTC)。

U

通用的可排序日期/時間模式

表示由當前 FullDateTimePattern 屬性定義的自定義 DateTime 格式字符串。

此模式與完整日期/長時間 (F) 模式相同。但是,格式化將作用於等效於正在格式化的 DateTime 對象的協調世界時 (UTC)。

Y 或 y

年月模式

表示由當前 YearMonthPattern 屬性定義的自定義 DateTime 格式字符串。

例如,用於固定區域性的自定義格式字符串爲“yyyy MMMM”。

任何其他單個字符

(未知說明符)

未知說明符將引發運行時格式異常。

控制面板設置

控制面板中“區域和語言選項”項中的設置會影響由格式化操作產生的結果字符串。這些設置用於初始化與當前線程區域性關聯的 DateTimeFormatInfo 對象,當前線程區域性將提供用於控制格式設置的值。使用不同設置的計算機會生成不同的結果字符串。

DateTimeFormatInfo 屬性

格式化受當前 DateTimeFormatInfo 對象的屬性影響,其由當前線程區域性隱式提供或由調用格式化的方法的 IFormatProvider 參數顯示提供。爲 IFormatProvider 參數指定一個表示區域性的 CultureInfo 對象或指定一個 DateTimeFormatInfo 對象。

許多標準 DateTime 格式說明符是由當前 DateTimeFormatInfo 對象的屬性定義的格式化模式的別名。因此,應用程序通過更改相應的 DateTimeFormatInfo 屬性可以改變由某些標準 DateTime 格式說明符產生的結果。

標準數字格式字符串

 

標準數字格式字符串用於格式化通用數值類型。標準數字格式字符串採用 Axx 的形式,其中 A 是稱爲格式說明符的字母型字符,xx 是稱爲精度說明符的可選整數。精度說明符的範圍從 0 到 99,並且影響結果中的位數。任何包含一個以上字母字符(包括空白)的數字格式字符串都被解釋爲自定義數字格式字符串

下表描述了標準數字格式說明符。有關各格式說明符所產生輸出的示例,請參見標準數字格式字符串輸出示例。有關更多信息,請參見表格之後的備註

格式說明符名稱說明

C 或 c

貨幣

數字轉換爲表示貨幣金額的字符串。轉換由當前 NumberFormatInfo 對象的貨幣格式信息控制。

精度說明符指示所需的小數位數。如果省略精度說明符,則使用當前 NumberFormatInfo 對象給定的默認貨幣精度。

D 或 d

十進制數

只有整型才支持此格式。數字轉換爲十進制數字 (0-9) 的字符串,如果數字爲負,則前面加負號。

精度說明符指示結果字符串中所需的最少數字個數。如果需要的話,則用零填充該數字的左側,以產生精度說明符給定的數字個數。

E 或 e

科學記數法(指數)

數字轉換爲“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字符串,其中每個“d”表示一個數字 (0-9)。如果該數字爲負,則該字符串以減號開頭。小數點前總有一個數字。

精度說明符指示小數點後所需的位數。如果省略精度說明符,則使用默認值,即小數點後六位數字。

格式說明符的大小寫指示在指數前加前綴“E”還是“e”。指數總是由正號或負號以及最少三位數字組成。如果需要,用零填充指數以滿足最少三位數字的要求。

F 或 f

定點

數字轉換爲“-ddd.ddd…”形式的字符串,其中每個“d”表示一個數字 (0-9)。如果該數字爲負,則該字符串以減號開頭。

精度說明符指示所需的小數位數。如果忽略精度說明符,則使用當前 NumberFormatInfo 對象給定的默認數值精度。

G 或 g

常規

根據數字類型以及是否存在精度說明符,數字會轉換爲定點或科學記數法的最緊湊形式。如果精度說明符被省略或爲零,則數字的類型決定默認精度,如下表所示。

  • ByteSByte:3

  • Int16UInt16:5

  • Int32UInt32:10

  • Int64UInt64:19

  • Single:7

  • Double:15

  • Decimal:29

如果用科學記數法表示數字時指數大於 -5 而且小於精度說明符,則使用定點表示法;否則使用科學記數法。如果要求有小數點,並且忽略尾部零,則結果包含小數點。如果精度說明符存在,並且結果的有效數字位數超過指定精度,則通過舍入刪除多餘的尾部數字。

上述規則有一個例外:如果數字是 Decimal 而且省略精度說明符時。在這種情況下總使用定點表示法並保留尾部零。

使用科學記數法時,如果格式說明符是“G”,結果的指數帶前綴“E”;如果格式說明符是“g”,結果的指數帶前綴“e”。

N 或 n

數字

數字轉換爲“-d,ddd,ddd.ddd…”形式的字符串,其中“-”表示負數符號(如果需要),“d”表示數字 (0-9),“,”表示數字組之間的千位分隔符,“.”表示小數點符號。實際的負數模式、數字組大小、千位分隔符以及十進制分隔符由當前 NumberFormatInfo 對象指定。

精度說明符指示所需的小數位數。如果忽略精度說明符,則使用當前 NumberFormatInfo 對象給定的默認數值精度。

P 或 p

百分比

數字轉換爲由 NumberFormatInfo.PercentNegativePatternNumberFormatInfo.PercentPositivePattern 屬性定義的、表示百分比的字符串,前者用於數字爲負的情況,後者用於數字爲正的情況。已轉換的數字乘以 100 以表示爲百分比。

精度說明符指示所需的小數位數。如果忽略精度說明符,則使用當前 NumberFormatInfo 對象給定的默認數值精度。

R 或 r

往返過程

只有 SingleDouble 類型支持此格式。往返過程說明符保證轉換爲字符串的數值再次被分析爲相同的數值。使用此說明符格式化數值時,首先使用常規格式對其進行測試:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的數值,則使用常規格式說明符對其進行格式化。但是,如果此值未被成功地分析爲相同數值,則它這樣格式化:Double 使用 17 位精度,Single 使用 9 位精度。

雖然此處可以存在精度說明符,但它將被忽略。使用此說明符時,往返過程優先於精度。

X 或 x

十六進制數

只有整型才支持此格式。數字轉換爲十六進制數字的字符串。格式說明符的大小寫指示對大於 9 的十六進制數字使用大寫字符還是小寫字符。例如,使用“X”產生“ABCDEF”,使用“x”產生“abcdef”。

精度說明符指示結果字符串中所需的最少數字個數。如果需要的話,則用零填充該數字的左側,以產生精度說明符給定的數字個數。

任何其他單個字符

(未知說明符)

(未知說明符將引發運行庫格式異常。)

備註

控制面板設置

控制面板中“區域和語言選項”項中的設置會影響由格式化操作產生的結果字符串。這些設置用於初始化與當前線程區域性關聯的 NumberFormatInfo 對象,並且當前線程區域性將提供用於控制格式設置的值。使用不同設置的計算機會生成不同的結果字符串。

NumberFormatInfo 屬性

格式化受當前 NumberFormatInfo 對象的屬性影響,其由當前線程區域性隱式提供或由調用格式化的方法的 IFormatProvider 參數顯示提供。爲該參數指定 NumberFormatInfoCultureInfo 對象。

整型和浮點型數值類型

對標準數字格式說明符的一些說明涉及到整型或浮點型數值類型。整型數值類型有 ByteSByteInt16Int32Int64UInt16UInt32UInt64。浮點型數值類型有 DecimalSingleDouble

浮點型無窮大和 NaN

請注意,無論格式字符串原來是什麼值,只要 SingleDouble 浮點類型的值爲正無窮大、負無窮大或非數字 (NaN),格式字符串就分別是當前適用的 NumberFormatInfo 對象指定的 PositiveInfinitySymbolNegativeInfinitySymbolNaNSymbol 屬性的值。

自定義 DateTime 格式字符串

 

自定義 DateTime 格式字符串由一個或多個自定義 DateTime 格式說明符組成,該格式字符串定義了由格式化操作產生的 DateTime 對象的文本表示形式。請注意,任何非標準 DateTime 格式字符串的字符串都被解釋爲自定義 DateTime 格式字符串。

自定義 DateTime 格式說明符

下表描述了自定義 DateTime 格式說明符。有關各格式說明符所產生輸出的示例,請參見自定義 DateTime 格式字符串輸出示例

格式說明符說明

d

將月中日期表示爲從 1 至 31 的數字。一位數字的日期設置爲不帶前導零的格式。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

dd

將月中日期表示爲從 01 至 31 的數字。一位數字的日期設置爲帶前導零的格式。

ddd

將一週中某天的縮寫名稱表示爲當前 System.Globalization.DateTimeFormatInfo.AbbreviatedDayNames 屬性中定義的名稱。

dddd(另加任意數量的“d”說明符)

將一週中某天的全名錶示爲當前 System.Globalization.DateTimeFormatInfo.DayNames 屬性中定義的名稱。

f

表示秒部分的最高有效位。

請注意,如果“f”格式說明符單獨使用,沒有其他格式說明符,則該說明符被看作是“f”標準 DateTime 格式說明符(完整日期/時間模式)。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

將此格式說明符與 ParseExactTryParseExact 方法一起使用時,所用“f”格式說明符的數目指示要分析的秒部分的最高有效位位數。

ff

表示秒部分的兩個最高有效位。

fff

表示秒部分的三個最高有效位。

ffff

表示秒部分的四個最高有效位。

fffff

表示秒部分的五個最高有效位。

ffffff

表示秒部分的六個最高有效位。

fffffff

表示秒部分的七個最高有效位。

F

表示秒部分的最高有效位。如果該位爲零,則不顯示任何信息。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

將此格式說明符與 ParseExactTryParseExact 方法一起使用時,所用“F”格式說明符的數目指示要分析的秒部分的最高有效位最大位數。

FF

表示秒部分的兩個最高有效位。但不顯示尾隨零(或兩個零位)。

FFF

表示秒部分的三個最高有效位。但不顯示尾隨零(或三個零位)。

FFFF

表示秒部分的四個最高有效位。但不顯示尾隨零(或四個零位)。

FFFFF

表示秒部分的五個最高有效位。但不顯示尾隨零(或五個零位)。

FFFFFF

表示秒部分的六個最高有效位。但不顯示尾隨零(或六個零位)。

FFFFFFF

表示秒部分的七個最高有效位。但不顯示尾隨零(或七個零位)。

g 或 gg(另加任意數量的“g”說明符)

表示時期或紀元(例如 A.D.)。如果要設置格式的日期不具有關聯的時期或紀元字符串,則忽略該說明符。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

h

將小時表示爲從 1 至 12 的數字,即通過 12 小時製表示小時,自午夜或中午開始對整小時計數。因此,午夜後經過的某特定小時數與中午過後的相同小時數無法加以區分。小時數不進行舍入,一位數字的小時數設置爲不帶前導零的格式。例如,給定時間爲 5:43,則此格式說明符顯示“5”。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

hh, hh(另加任意數量的“h”說明符)

將小時表示爲從 01 至 12 的數字,即通過 12 小時製表示小時,自午夜或中午開始對整小時計數。因此,午夜後經過的某特定小時數與中午過後的相同小時數無法加以區分。小時數不進行舍入,一位數字的小時數設置爲帶前導零的格式。例如,給定時間爲 5:43,則此格式說明符顯示“05”。

H

將小時表示爲從 0 至 23 的數字,即通過從零開始的 24 小時製表示小時,自午夜開始對小時計數。一位數字的小時數設置爲不帶前導零的格式。

HH, HH(另加任意數量的“H”說明符)

將小時表示爲從 00 至 23 的數字,即通過從零開始的 24 小時製表示小時,自午夜開始對小時計數。一位數字的小時數設置爲帶前導零的格式。

K

表示 DateTime.Kind 屬性的不同值,即“Local”、“Utc”或“Unspecified”。此說明符以文本形式循環設置 Kind 值並保留時區。如果 Kind 值爲“Local”,則此說明符等效於“zzz”說明符,用於顯示本地時間偏移量,例如“-07:00”。對於“Utc”類型值,該說明符顯示字符“Z”以表示 UTC 日期。對於“Unspecified”類型值,該說明符等效於“”(無任何內容)。

m

將分鐘表示爲從 0 至 59 的數字。分鐘表示自前一小時後經過的整分鐘數。一位數字的分鐘數設置爲不帶前導零的格式。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

mm, mm(另加任意數量的“m”說明符)

將分鐘表示爲從 00 至 59 的數字。分鐘表示自前一小時後經過的整分鐘數。一位數字的分鐘數設置爲帶前導零的格式。

M

將月份表示爲從 1 至 12 的數字。一位數字的月份設置爲不帶前導零的格式。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

MM

將月份表示爲從 01 至 12 的數字。一位數字的月份設置爲帶前導零的格式。

MMM

將月份的縮寫名稱表示爲當前 System.Globalization.DateTimeFormatInfo.AbbreviatedMonthNames 屬性中定義的名稱。

MMMM

將月份的全名錶示爲當前 System.Globalization.DateTimeFormatInfo.MonthNames 屬性中定義的名稱。

s

將秒錶示爲從 0 至 59 的數字。秒錶示自前一分鐘後經過的整秒數。一位數字的秒數設置爲不帶前導零的格式。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

ss, ss(另加任意數量的“s”說明符)

將秒錶示爲從 00 至 59 的數字。秒錶示自前一分鐘後經過的整秒數。一位數字的秒數設置爲帶前導零的格式。

t

表示當前 System.Globalization.DateTimeFormatInfo.AMDesignatorSystem.Globalization.DateTimeFormatInfo.PMDesignator 屬性中定義的 A.M./P.M. 指示符的第一個字符。如果正在格式化的時間中的小時數小於 12,則使用 A.M. 指示符;否則使用 P.M. 指示符。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

tt, tt(另加任意數量的“t”說明符)

將 A.M./P.M. 指示符表示爲當前 System.Globalization.DateTimeFormatInfo.AMDesignatorSystem.Globalization.DateTimeFormatInfo.PMDesignator 屬性中定義的內容。如果正在格式化的時間中的小時數小於 12,則使用 A.M. 指示符;否則使用 P.M. 指示符。

y

將年份表示爲最多兩位數字。如果年份多於兩位數,則結果中僅顯示兩位低位數。如果年份少於兩位數,則該數字設置爲不帶前導零的格式。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

yy

將年份表示爲兩位數字。如果年份多於兩位數,則結果中僅顯示兩位低位數。如果年份少於兩位數,則用前導零填充該數字使之達到兩位數。

yyy

將年份表示爲三位數字。如果年份多於三位數,則結果中僅顯示三位低位數。如果年份少於三位數,則用前導零填充該數字使之達到三位數。

請注意,對於年份可以爲五位數的泰國佛曆,此格式說明符將顯示全部五位數。

yyyy

將年份表示爲四位數字。如果年份多於四位數,則結果中僅顯示四位低位數。如果年份少於四位數,則用前導零填充該數字使之達到四位數。

請注意,對於年份可以爲五位數的泰國佛曆,此格式說明符將呈現全部五位數。

yyyyy(另加任意數量的“y”說明符)

將年份表示爲五位數字。如果年份多於五位數,則結果中僅顯示五位低位數。如果年份少於五位數,則用前導零填充該數字使之達到五位數。

如果存在額外的“y”說明符,則用所需個數的前導零填充該數字使之達到“y”說明符的數目。

z

表示系統時間距格林威治時間 (GMT) 以小時爲單位測量的帶符號時區偏移量。例如,位於太平洋標準時區中的計算機的偏移量爲“-8”。

偏移量始終顯示爲帶有前導符號。加號 (+) 指示小時數早於 GMT,減號 (-) 指示小時數遲於 GMT。偏移量範圍爲 –12 至 +13。一位數字的偏移量設置爲不帶前導零的格式。偏移量受夏時制影響。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

zz

表示系統時間距格林威治時間 (GMT) 以小時爲單位測量的帶符號時區偏移量。例如,位於太平洋標準時區中的計算機的偏移量爲“-08”。

偏移量始終顯示爲帶有前導符號。加號 (+) 指示小時數早於 GMT,減號 (-) 指示小時數遲於 GMT。偏移量範圍爲 –12 至 +13。一位數字的偏移量設置爲帶前導零的格式。偏移量受夏時制影響。

zzz, zzz(另加任意數量的“z”說明符)

表示系統時間距格林威治時間 (GMT) 以小時和分鐘爲單位測量的帶符號時區偏移量。例如,位於太平洋標準時區中的計算機的偏移量爲“-08:00”。

偏移量始終顯示爲帶有前導符號。加號 (+) 指示小時數早於 GMT,減號 (-) 指示小時數遲於 GMT。偏移量範圍爲 –12 至 +13。一位數字的偏移量設置爲帶前導零的格式。偏移量受夏時制影響。

:

當前 System.Globalization.DateTimeFormatInfo.TimeSeparator 屬性中定義的時間分隔符,用於區分小時、分鐘和秒。

/

當前 System.Globalization.DateTimeFormatInfo.DateSeparator 屬性中定義的日期分隔符,用於區分年、月和日。

"

帶引號的字符串(引號)。顯示兩個引號 (") 之間的任意字符串的文本值。在每個引號前使用轉義符 (/)。

'

帶引號的字符串(撇號)。顯示兩個撇號 (') 字符之間的任意字符串的文本值。

%c

當自定義 DateTime 格式字符串只包含自定義格式說明符“c”時,表示與該自定義格式說明符關聯的結果。也就是說,若要單獨使用自定義格式說明符“d”、“f”、“F”、“h”、“m”、“s”、“t”、“y”、“z”、“H”或“M”,請指定“%d”、“%f”、“%F”、“%h”、“%m”、“%s”、“%t”、“%y”、“%z”、“%H”或“%M”。有關使用單個格式說明符的更多信息,請參見使用單個自定義格式說明符

/c

轉義符。當字符“c”前帶有轉義符 (/) 時,將該字符顯示爲文本。若要將反斜槓字符本身插入結果字符串,請使用兩個轉義符(“//”)。

任何其他字符

所有其他字符被複制到結果字符串中,而且不影響格式化。

控制面板設置

控制面板中“區域和語言選項”項中的設置會影響由格式化操作產生的結果字符串。這些設置用於初始化與當前線程區域性關聯的 DateTimeFormatInfo 對象,並且當前線程區域性將提供用於控制格式設置的值。使用不同設置的計算機會生成不同的結果字符串。

DateTimeFormatInfo 屬性

格式化受當前 DateTimeFormatInfo 對象的屬性影響,其由當前線程區域性隱式提供或由調用格式化的方法的 IFormatProvider 參數顯示提供。爲 IFormatProvider 參數指定一個表示區域性的 CultureInfo 對象或指定一個 DateTimeFormatInfo 對象。

許多標準 DateTime 格式說明符是由當前 DateTimeFormatInfo 對象的屬性定義的格式化模式的別名。這意味着通過更改相應的 DateTimeFormatInfo 屬性可以改變由某些標準 DateTime 格式說明符產生的結果。

使用單個自定義格式說明符

自定義 DateTime 格式字符串由兩個或更多字符組成。例如,如果格式字符串僅包含說明符“h”,則該格式字符串將被解釋爲標準 DateTime 格式字符串。但是,在這種特定情況下將引發異常,因爲不存在“h”標準 DateTime 格式說明符。

若要使用單個自定義 DateTime 格式說明符,在 DateTime 說明符之前或之後添加一個空格,或在 DateTime 說明符之前添加一個百分號 (%) 格式說明符。例如,格式字符串“h ”和“%h”將被解釋爲自定義 DateTime 格式字符串,其顯示當前 DateTime 對象所表示的小時。請注意,如果使用了空格,則該字符串在結果字符串中將顯示爲原義字符。

枚舉格式字符串

可以使用 Enum..::.ToString 方法創建新的字符串對象,以表示枚舉成員的數值、十六進制值或字符串值。此方法採用某個枚舉格式化字符串指定希望返回的值。

下表列出了枚舉格式化字符串及其返回的值。這些格式說明符不區分大小寫。

格式字符串

結果

G 或 g

如有可能,將枚舉項顯示爲字符串值,否則顯示當前實例的整數值。

如果枚舉定義中設置了 Flags 屬性,則串聯每個有效項的字符串值並將各值用逗號分開。

如果未設置 Flags 屬性,則將無效值顯示爲數字項。下面的示例闡釋 G 格式說明符。

Visual Basic
Console.WriteLine(ConsoleColor.Red.ToString("G"))           ' Displays RedDim attributes As FileAttributes = FileAttributes.Hidden Or _                                   FileAttributes.ArchiveConsole.WriteLine(attributes.ToString("G")) ' Displays Hidden, Archive                               
C#
Console.WriteLine(ConsoleColor.Red.ToString("G"));    // Displays RedFileAttributes attributes = FileAttributes.Hidden |                           FileAttributes.Archive;Console.WriteLine(attributes.ToString("G")); //Displays Hidden, Archive                               

F 或 f

如有可能,將枚舉項顯示爲字符串值。如果值可以完全顯示爲枚舉項的總和(即使未提供 Flags 屬性),

則串聯每個有效項的字符串值並將各值用逗號分開。如果值不能完全由枚舉項確定,則將值格式化爲整數值。

下面的示例闡釋 F 格式說明符。

Visual Basic
Console.WriteLine(ConsoleColor.Blue.ToString("F"))         ' Displays BlueDim attributes As FileAttributes = FileAttributes.Hidden Or _                                   FileAttributes.ArchiveConsole.WriteLine(attributes.ToString("F")) ' Displays Hidden, Archive                               
C#
Console.WriteLine(ConsoleColor.Blue.ToString("F")); // Displays BlueFileAttributes attributes = FileAttributes.Hidden |                             FileAttributes.Archive;Console.WriteLine(attributes.ToString("F")); //Displays Hidden, Archive                               

D 或 d

以儘可能短的表示形式將枚舉項顯示爲整數值。下面的示例闡釋 D 格式說明符。

Visual Basic
Console.WriteLine(ConsoleColor.Cyan.ToString("D"))           ' Displays 11Dim attributes As FileAttributes = FileAttributes.Hidden Or _                                   FileAttributes.ArchiveConsole.WriteLine(attributes.ToString("D"))   ' Displays 34                               
C#
Console.WriteLine(ConsoleColor.Cyan.ToString("D"));         // Displays 11FileAttributes attributes = FileAttributes.Hidden |                            FileAttributes.Archive;Console.WriteLine(attributes.ToString("D"));  // Displays 34                               

X 或 x

將枚舉項顯示爲十六進制值。按需要將值表示爲帶有前導零,以確保值的長度最少有八位。下面的示例闡釋 X 格式說明符。

Visual Basic
Console.WriteLine(ConsoleColor.Cyan.ToString("X"))     ' Displays 0000000BDim attributes As FileAttributes = FileAttributes.Hidden Or _  FileAttributes.ArchiveConsole.WriteLine(attributes.ToString("X")) ' Displays 00000022                               
C#
Console.WriteLine(ConsoleColor.Cyan.ToString("X"));   // Displays 0000000BFileAttributes attributes = FileAttributes.Hidden |                       FileAttributes.Archive;Console.WriteLine(attributes.ToString("X"));  // Displays 00000022                               
 

自定義數字格式字符串

 您所創建的自定義數字格式字符串由一個或多個自定義數字格式說明符組成,用於定義格式化數值數據的方式。自定義數字格式字符串的等效定義是非標準數字格式字符串的字符串。

 下表描述了自定義數字格式說明符。有關各格式說明符所產生輸出的示例,請參見自定義數字格式字符串輸出示例。有關更多信息,請參見表格之後的備註

格式說明符名稱說明

0

零佔位符

如果格式化的值在格式字符串中出現“0”的位置有一個數字,則此數字被複制到結果字符串中。小數點前最左邊的“0”的位置和小數點後最右邊的“0”的位置確定總在結果字符串中出現的數字範圍。

“00”說明符使得值被舍入到小數點前最近的數字,其中零位總被捨去。例如,用“00”格式化 34.5 將得到值 35。

#

數字佔位符

如果格式化的值在格式字符串中出現“#”的位置有一個數字,則此數字被複制到結果字符串中。否則,結果字符串中的此位置不存儲任何值。

請注意,如果“0”不是有效數字,此說明符永不顯示“0”字符,即使“0”是字符串中唯一的數字。如果“0”是所顯示的數字中的有效數字,則顯示“0”字符。

“##”格式字符串使得值被舍入到小數點前最近的數字,其中零總被捨去。例如,用“##”格式化 34.5 將得到值 35。

.

小數點

格式字符串中的第一個“.”字符確定格式化的值中的小數點分隔符的位置;任何其他“.”字符被忽略。

用作小數點分隔符的實際字符由控制格式化的 NumberFormatInfoNumberDecimalSeparator 屬性確定。

,

千位分隔符和數字比例換算

“,”字符可作爲千位分隔符說明符和數字比例換算說明符。

千位分隔符說明符:如果在兩個數字佔位符(0 或 #)之間指定一個或多個“,”字符用於設置數字整數位的格式,則在輸出的整數部分中每個數字組之間插入一個組分隔符字符。

當前 NumberFormatInfo 對象的 NumberGroupSeparatorNumberGroupSizes 屬性將確定用作數字組分隔符的字符以及每個數字組的大小。例如,如果使用字符串“#,#”和固定區域性對數字 1000 進行格式化,則輸出爲“1,000”。

數字比例換算說明符:如果在緊鄰顯式或隱式小數點的左側指定一個或多個“,”字符,則每出現一個數字比例換算說明符便將要格式化的數字除以 1000。例如,如果使用字符串“0,,”對數字 1000000000 進行格式化,則輸出爲“100”。

可以在同一格式字符串中使用千位分隔符說明符和數字比例換算說明符。例如,如果使用字符串“#,0,,”和固定區域性對數字 10000000000 進行格式化,則輸出爲“1,000”。

%

百分比佔位符

在格式字符串中出現“%”字符將導致數字在格式化之前乘以 100。適當的符號插入到數字本身在格式字符串中出現“%”的位置。使用的百分比字符由當前的 NumberFormatInfo 類確定。

E0

E+0

E-0

e0

e+0

e-0

科學記數法

如果“E”、“E+”、“E-”、“e”、“e+”或“e-”中的任何一個字符串出現在格式字符串中,而且後面緊跟至少一個“0”字符,則數字用科學記數法來格式化,在數字和指數之間插入“E”或“e”。跟在科學記數法指示符後面的“0”字符數確定指數輸出的最小位數。“E+”和“e+”格式指示符號字符(正號或負號)應總是置於指數前面。“E”、“E-”、“e”或“e-”格式指示符號字符僅置於負指數前面。

/

轉義符

在 C# 和 C++ 中,反斜槓字符使格式字符串中的下一個字符被解釋爲轉義序列。它與傳統的格式化序列一起使用,如“/n”(換行)。

在某些語言中,轉義符本身用作文本時必須跟在轉義符之後。否則,編譯器將該字符理解爲轉義符。使用字符串“//”顯示“/”。

請注意,Visual Basic 中不支持此轉義符,但是 ControlChars 提供相同的功能。

'ABC'

"ABC"

字符串

引在單引號或雙引號中的字符被複制到結果字符串中,而且不影響格式化。

;

部分分隔符

“;”字符用於分隔格式字符串中的正數、負數和零各部分。

其他

所有其他字符

所有其他字符被複制到結果字符串中,而且不影響格式化。

備註

浮點型無窮大和 NaN

請注意,無論格式字符串原來是什麼值,只要 SingleDouble 浮點類型的值爲正無窮大、負無窮大或非數字 (NaN),格式字符串就分別是當前適用的 NumberFormatInfo 對象指定的 PositiveInfinitySymbolNegativeInfinitySymbolNaNSymbol 屬性的值。

控制面板設置

控制面板中“區域和語言選項”項中的設置會影響由格式化操作產生的結果字符串。這些設置用於初始化與當前線程區域性關聯的 NumberFormatInfo 對象,並且當前線程區域性將提供用於控制格式設置的值。使用不同設置的計算機會生成不同的結果字符串。

舍入和定點格式字符串

請注意,對於定點格式字符串(即不包含科學記數法格式字符的格式字符串),數字被舍入爲與小數點右邊的數字佔位符數目相同的小數位數。如果格式字符串不包含小數點,數字被舍入爲最接近的整數。如果數字位數多於小數點左邊數字佔位符的個數,多餘的數字被複制到結果字符串中緊挨着第一個數字佔位符的前面。

部分分隔符和條件格式

可以根據值爲正、爲負還是爲零來爲字符串應用不同的格式化。爲產生這種行爲,自定義格式字符串可以包含最多三個用分號分隔的部分。下表描述了這些部分。

部分數目說明

一個部分

格式字符串應用於所有值。

兩個部分

第一部分應用於正值和零,第二部分應用於負值。

如果要格式化的數字爲負,但根據第二部分中的格式舍入後爲零,則最終的零根據第一部分進行格式化。

三個部分

第一部分應用於正值,第二部分應用於負值,第三部分應用於零。

第二部分可以留空(分號間沒有任何內容),在這種情況下,第一部分應用於所有非零值。

如果要格式化的數字爲非零值,但根據第一部分或第二部分中的格式舍入後爲零,則最終的零根據第三部分進行格式化。

格式化最終值時,部分分隔符忽略所有先前存在的與數字關聯的格式設置。例如,使用部分分隔符時,顯示的負值永遠不帶負號。如果您希望格式化後的最終值帶有負號,則應明確包含負號,讓它作爲自定義格式說明符的組成部分。

 

*************************************************************************

實例:

C#中的String.Format方法

一、定義
String.Format
是將指定的 String類型的數據中的每個格式項替換爲相應對象的值的文本等效項。
如:

(1)
string p1 = "Jackie";
string p2 = "Aillo";
Response.Write(String.Format("Hello {0}, I'm {1}", p1, p2));
(2)
Response.Write(String.Format("Hello {0}, I'm {1}", "Jackie", "Aillo"));

這二者的效果是一樣的。都是將最後面的兩項的值分別替換第一項的{0}和{1}。
輸出的結果是:Hello Jackie, I'm Aillo

二、String.Format的多格式定義:
      這裏所謂的多格式是指一個格式項中可以定義1~3個格式參數,每種格式參數用分號(;)隔開。帶2個和3個格式參數的格式項所對應的值必須是數值類型的,這樣才能判斷是否爲負數、正數、零。
帶1個格式參數:
//以科學計數法的格式輸出
double p1 = 1000000;
Response.Write(String.Format("{0:E2}", p1));
帶2個格式參數:
/*當格式項對應的值爲非負數,則選擇第一種格式;值爲負數則選第二種格式*/
double p1 = 10000;
double p2 = -2420.50;
Response.Write(String.Format("{0:#,###0.00;#,###0.000;}<BR>", p1));
Response.Write(String.Format("{0:#,###0.00;#,###0.000;}", p2));
帶3個格式參數:
/*當格式項對應的值爲正數則選擇第一張格式;
負數則爲第二中格式;
值等於零則爲第三種格式*/
1double p1 = 10000;
double p2 = -2420.50;
double p3 = 0.00;
Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}<BR>", p1));
Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}<BR>", p3));
Response.Write(String.Format("{0:#,###0.00;#,###0.000;#,###0.0000}", p2));
補充:
{0:N2} 中的N3,f3表示格式化之後數據的類型以及小數的位數。如:N2表示帶2個小數的數字;
與此類似:
N或者n  表示  數字
F或者f   表示  固定點
E或者e  表示  科學計數法
D或者d  表示  十進制數
X或者x  表示  十六進制
G或者g  表示  常規
C或者c  表示  貨幣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章