Strings.Format(Object, String) 方法

定義

傳回字串,其格式化方式是根據格式 String 運算式內包含的指令。

public static string Format (object? Expression, string? Style = "");
public static string Format (object Expression, string Style = "");
static member Format : obj * string -> string
Public Function Format (Expression As Object, Optional Style As String = "") As String

參數

Expression
Object

必要。 任何有效的運算式。

Style
String

選擇性。 有效的具名或使用者定義的格式 String 運算式。

傳回

字串,其格式化方式是根據格式 String 運算式內包含的指令。

範例

此範例將示範 Format 函式的各種使用方式,以透過 String 格式及使用者定義的格式,將值格式化。 對於日期分隔符號 (/)、時間分隔符號 (:) 和 AM/PM 指示器 (ttt) 而言,系統顯示的實際格式化輸出需視程式碼使用的地區設定而定。 當時間和日期顯示在開發環境內時,會使用程式碼地區設定的簡短時間格式和簡短日期格式。

注意

若為使用 24 小時制的地區設定,AM/PM 指示器 (ttt) 不會顯示任何內容。

Dim testDateTime As Date = #1/27/2001 5:04:23 PM#
Dim testStr As String
' Returns current system time in the system-defined long time format.
testStr = Format(Now(), "Long Time")
' Returns current system date in the system-defined long date format.
testStr = Format(Now(), "Long Date")
' Also returns current system date in the system-defined long date 
' format, using the single letter code for the format.
testStr = Format(Now(), "D")

' Returns the value of testDateTime in user-defined date/time formats.
' Returns "5:4:23".
testStr = Format(testDateTime, "h:m:s")
' Returns "05:04:23 PM".
testStr = Format(testDateTime, "hh:mm:ss tt")
' Returns "Saturday, Jan 27 2001".
testStr = Format(testDateTime, "dddd, MMM d yyyy")
' Returns "17:04:23".
testStr = Format(testDateTime, "HH:mm:ss")
' Returns "23".
testStr = Format(23)

' User-defined numeric formats.
' Returns "5,459.40".
testStr = Format(5459.4, "##,##0.00")
' Returns "334.90".
testStr = Format(334.9, "###0.00")
' Returns "500.00%".
testStr = Format(5, "0.00%")

備註

方法 String.Format 也會提供類似的功能。

如果您要格式化非本地化的數值字串,您應該使用使用者定義的數值格式,以確保您取得想要的外觀。

如果您嘗試在不指定 Style的情況下格式化數位,函 Format 式會提供與函式類似的 Str 功能,雖然它是國際感知的。 不過,使用 Format 函式格式化為字串的正數不包含保留給值正負號的前置空格;使用 Str 函式轉換的正數會保留前置空格。

不同數值的不同格式

數字的使用者定義格式運算式可以有一到三個區段 (以分號分隔)。 如果函 Style 式的 Format 自變數包含其中一個預先定義的數值格式,則只允許一個區段。

如果您使用 以下是結果:
僅限一個區段 格式運算式套用到所有的值。
兩個區段 第一個區段適用於正值和零,第二個則適用於負值。
三個區段 第一個區段適用於正值,第二個區段適用於負值,第三個則適用於零。

下列範例有兩個區段:第一個區段會定義正值和零的格式;第二個區段會定義負值的格式。 由於函 Style 式的 Format 自變數採用字串,所以會以引號括住。

Dim style1 As String = "$#,##0;($#,##0)"

如果分號之間無內容,則會使用正值格式來列印遺失的區段。 例如,下列格式會使用第一個區段中的格式來顯示正值和負值,並顯示 Zero 此值是否為零。

Dim style2 As String = "$#,##0;;\Z\e\r\o"

預先定義的數值格式

下表會識別預先定義的數值格式名稱。 這些參數可由 name 作為 Style 函式的 Format 自變數使用:

格式名稱 描述
General NumberGg 顯示沒有千位分隔符的數位。

例如 Format(&H3FA, "g") 會傳回 1018
CurrencyCc 視需要顯示具有千位分隔符的數位;顯示小數分隔符右邊的兩位數。 輸出是以系統地區設定為基礎。

例如 Format(1234567, "c") 會傳回 $1,234,567.00
FixedFf 在小數點分隔符號的左邊至少顯示一位數,並在小數點分隔符號的右邊顯示兩位數。

例如 Format(1234567, "f") 會傳回 1234567.00
StandardNn 顯示具有千位分隔符的數位,左邊至少一位數,小數分隔符右邊至少顯示兩位數。

例如 Format(1234567, "n") 會傳回 1,234,567.00
Percent 顯示乘以 100 的數字,並在右邊緊接著附加百分比符號 (%);一律在小數分隔符號的右邊顯示兩位數。

例如 Format(0.4744, "Percent") 會傳回 47.44%
P,或 p 顯示乘以 100 後在右方附加百分比符號 (%),並以單一空格分隔且含有千位分節點的數字;在小數點分隔符號的右邊永遠顯示兩位數。

例如 Format(0.80345, "p") 會傳回 80.35 %
Scientific 使用標準科學記號標記法,提供兩個有效位數。

例如 Format(1234567, "Scientific") 會傳回 1.23E+06
E,或 e 使用標準科學記號標記法,提供 6 個有效位數。

例如 Format(1234567, "e") 會傳回 1.234567e+006
D,或 d 以包含十進位 (基數為 10) 格式之數值的字串顯示數字。 只有 、、ShortIntegerLong) 整數 (Byte型別才支援此選項。

例如 Format(&H7F, "d") 會傳回 127
X,或 x 以包含十六進位 (基數為 16) 格式之數值的字串顯示數字。 只有 、、ShortIntegerLong) 整數 (Byte型別才支援此選項。

例如 Format(127, "x") 會傳回 7f
Yes/No 如果 number 為 0,則顯示 No ,否則會顯示 Yes

例如 Format(0, "Yes/No") 會傳回 No
True/False 如果 number 為 0,則顯示 False ,否則會顯示 True

例如 Format(1, "True/False") 會傳回 True
On/Off 如果 number 為 0,則顯示 Off ,否則會顯示 On

例如 Format(1, "On/Off") 會傳回 On

智慧型裝置開發人員注意事項

Yes/No不支援、 True/FalseOn/Off 格式。

User-Defined 數值格式

下表列出可用以建立使用者定義數字格式的字元。 這些可用來建置 Style 函式的 Format 自變數:

字元 描述
不使用格式顯示數字。
(0) 數字預留位置。 顯示數字或零。 如果表達式在格式字串中出現零的位置有數位,則顯示它;否則,會顯示該位置中的零。

如果數字位數少於格式運算式中的零 (小數的兩邊),則顯示前置零或後置零。 如果數字在小數分隔符號右側之位數多於格式運算式中小數分隔符號右側的零,則將數字四捨五入為等同於零之位數的小數位數。 如果數字在小數分隔符號左側的位數,多於格式運算式中小數分隔符號左側的零,則顯示額外的數字但不予修改。
(#) 數字預留位置。 顯示數字或不顯示。 如果表達式在字元出現在格式字串的位置 # 中有數位,則顯示它;否則,該位置不會顯示任何內容。

此符號的運作方式與數位佔位元類似 0 ,不同之處在於,如果數位在格式表達式中小數分隔符的任一端有字元數, # 則不會顯示前置和尾端的零。
(.) 小數預留位置。 小數預留位置會決定小數分隔符號左邊和右邊顯示多少位數。 如果格式表達式只 # 包含此符號左邊的字元;小於 1 的數位會以小數分隔符開頭。 若要顯示含有小數位數的前置零,請使用零作為小數分隔符號左邊的第一個數字預留位置。 在某些地區設定中,會使用逗號做為小數分隔符號。 在格式化輸出中作為小數預留位置使用的實際字元,取決於您系統所辨識的數字格式。 因此,即使在使用逗號作為小數預留位置的地區設定中,您的格式也應該使用句點作為小數預留位置。 格式化的字串會以正確地區設定格式出現。
(%) 百分比預留位置。 將運算式乘以 100。 百分比字元 (%) 會插入在其出現於格式字串中的位置。
(,) 千位分隔符號。 千位分隔符會在小數分隔符號左邊有四個以上位置的數字中,分隔百位數與千位數。 如果格式包含以數位佔位符括住的千位符,則會指定千位符的標準用法 (0#) 。

小數分隔符左邊的千位分隔符 (是否指定十進位) 或字串中最右邊的字元表示「將數位除以 1,000,視需要四捨五入」。小於 1,000 但大於或等於 500 的數字會顯示為 1,且小於 500 的數位會顯示為 0。 此位置的兩個相連千位分隔符號會以係數 1 百萬調整規模,而每個額外的分隔符號則另有一個係數 1,000。

在緊鄰小數分隔符號左側或字串最右側以外任何位置中的多個分隔符號,僅視為指定使用千位分隔符號。 在某些地區設定中,會使用句點做為千位分隔符。 在格式化輸出中做為千位分隔符的實際字元,取決於您的系統所能辨識的數字格式。 因此,即使在使用句號作為千位分隔符的地區設定中,您的格式也應該使用逗號點作為千位分隔符號。 格式化的字串會以正確地區設定格式出現。

例如,請設想下列三種格式字串:

- "#,0.",它會使用千位分隔符,將數位 1 億格式化為字串 “100,000,000”。
- "#0,.",其使用以10000萬的因數調整,將數位10000萬格式化為字串 “100000”。
- "#,0,.",它會使用千位分隔符並縮放一千,將數位 1000 萬格式化為字串 “100,000”。
(:) 時間分隔符號。 在某些地區設定中,可能會使用其他字元來代表時間分隔符號。 時間分隔符號會在設定時間值格式時,分隔小時、分鐘和秒。 在格式化輸出中作為時間分隔符號使用的實際字元是由您的系統設定所決定。
(/) 日期分隔符號。 在某些地區設定中,可能會使用其他字元來代表日期分隔符號。 日期分隔符號會在設定日期值格式時,分隔日、月和年。 在格式化輸出中用來作為日期分隔符號的實際字元,是由您的系統設定所決定。
(E-``E+``e-``e+) 科學格式。 如果格式表達式至少包含一個數位佔位元, (或 #) E+E-0 、、 e-e+左邊,則數位會以科學格式E顯示,或在e數位與其指數之間插入。 左邊數字預留位置的數目,會決定指數的數字數目。 使用 E-e- 將負號放在負數指數旁。 使用 E+e+ 將負號放在負數指數旁邊,以及正指數旁的加號。 您也必須在這個符號的右邊加上數位預留位置,才能取得正確的格式。
-+$ ( ) 常值字元。 這些字元在格式字串中要和鍵入的完全一致。 若要顯示非列出的字元,請在其前面加上反斜線 (\) 或以雙引號 (" ") 括住。
(\) 顯示格示字串中的下一個字元。 若要將有特殊意義的字元顯示為常值字元,請在其前面加上反斜線 (\。 反斜線本身不會顯示。 使用反斜線就和使用雙引號把反斜線後面的字元括起來是一樣的。 若要顯示反斜線,請使用兩個反斜線 (\\)。

無法顯示為常值字元的字元範例包括日期格式設定和時間格式字元 (acd:phwqst/ymn和) 、數值格式字元 (#0%Ee逗號和句點) ,以及字元串格式字元 (@&、、 <>!) 。
("``ABC``") 顯示雙引號 (" ") 內的字串。 若要在程式代碼中包含樣式自變數中的字串,您必須使用 Chr(34) 來括住文字 (34 是引號 (“) ) 的字元碼。

舊版程式碼範例

下表包含一些數字的範例格式運算式。 (這些範例全都假設您的系統地區設定是英文-美國 ) 第一個數據行包含函式自變數的格式Format字串Style;如果格式化的數據具有數據行標題中提供的值,則其他數據行會包含產生的輸出。

格式 (Style) "5" 格式化為 "-5" 格式化為 "0.5" 格式化為
Zero-length string ("") 5 -5 0.5
0 5 -5 1
0.00 5.00 -5.00 0.50
#,##0 5 -5 1
$#,##0;($#,##0) $5 ($5) $1
$#,##0.00;($#,##0.00) $5.00 ($5.00) $0.50
0% 500% -500% 50%
0.00% 500.00% -500.00% 50.00%
0.00E+00 5.00E+00 -5.00E+00 5.00E-01
0.00E-00 5.00E00 -5.00E00 5.00E-01

預先定義的日期/時間格式

下表會識別預先定義的日期和時間格式名稱。 這些可以依名稱作為函式的 Format 樣式自變數使用:

格式名稱 描述
General Date,或 G 顯示日期及/或時間。 例如: 3/12/2008 11:07:31 AM 。 日期顯示取決於應用程式的目前文化特性值。
Long DateMedium DateD 根據目前文化特性的完整日期格式來顯示日期。 例如: Wednesday, March 12, 2008
Short Date,或 d 使用目前文化特性的簡短日期格式來顯示日期。 例如: 3/12/2008

d字元會以使用者定義的日期格式顯示日期。
Long TimeMedium TimeT 使用目前文化特性的完整時間格式來顯示時間;通常包含小時、分鐘、秒。 例如: 11:07:31 AM
Short Timet 使用目前文化特性的簡短時間格式顯示時間。 例如: 11:07 AM

t字元會針對以使用者定義的時間格式使用12小時制的地區設定顯示AMPM值。
f 根據目前文化特性的格式顯示完整日期和簡短時間。 例如: Wednesday, March 12, 2008 11:07 AM
F 根據目前文化特性的格式顯示完整日期和完整時間。 例如: Wednesday, March 12, 2008 11:07:31 AM
g 根據目前文化特性的格式顯示簡短日期和簡短時間。 例如: 3/12/2008 11:07 AM
M, m 顯示日期的月和日。 例如: March 12

M字元會以使用者定義的日期格式顯示月份。 m字元會以使用者定義的時間格式顯示分鐘數。
R, r 根據 RFC1123Pattern 屬性格式化日期。 例如: Wed, 12 Mar 2008 11:07:31 GMT 。 格式化的日期不需要調整日期和時間的值。 呼叫 函式之前 Format ,您必須將 [日期/時間] 值調整為 GMT。
s 將日期及時間格式化為可排序的索引。 例如: 2008-03-12T11:07:31

s字元會以使用者定義的時間格式顯示秒數。
u 將日期及時間格式化為 GMT 可排序的索引。 例如: 2008-03-12 11:07:31Z
U 使用完整日期和完整時間,將日期及時間格式化為 GMT。 例如: Wednesday, March 12, 2008 6:07:31 PM
Y, y 將日期格式化為年份和月份。 例如: March, 2008

Yy 字元會以使用者定義的日期格式顯示年份。

如需應用程式目前文化特性資訊的詳細資訊,請參閱 文化特性如何影響Visual Basic中的字串

User-Defined 日期/時間格式

下表顯示建立使用者定義日期/時間格式的可用字元。 不同於舊版的Visual Basic,這些格式字元會區分大小寫。

字元 描述
(:) 時間分隔符號。 在某些地區設定中,可能會使用其他字元來代表時間分隔符號。 時間分隔符號會在設定時間值格式時,分隔小時、分鐘和秒。 在格式化輸出中作為時間分隔符號使用的實際字元,是由您應用程式目前的文化特性值所決定。
(/) 日期分隔符號。 在某些地區設定中,可能會使用其他字元來代表日期分隔符號。 日期分隔符號會在設定日期值格式時,分隔日、月和年。 在格式化輸出中作為日期分隔符號使用的實際字元,是由您應用程式目前的文化特性所決定。
(%) 用以表示下列字元應讀取為單字母格式,不考慮任何尾隨字母。 也可用以表示,以使用者定義的格式讀取單字母格式。 如需其他詳細資料,請參閱以下內容。
d 例如,將日期顯示為沒有前置零的數位 (,例如) 1 。 如果這是使用者定義數值格式中唯一的字元,請使用 %d
dd 例如,將日期顯示為具有前置零的數位 (, 01 例如) 。
ddd 例如,將日期顯示為縮寫 (, Sun 例如) 。
dddd 例如,將日期顯示為完整名稱 () Sunday
M 例如,將月份顯示為沒有前置零的數位 (,1 月會 1 以) 表示。 如果這是使用者定義數值格式中唯一的字元,請使用 %M
MM 例如,將月份顯示為具有前置零的數位 (, 01/12/01 例如) 。
MMM 例如,將月份顯示為縮寫 (, Jan 例如) 。
MMMM 例如,將月份顯示為完整月份名稱 () January
gg 顯示句號/紀元字串 (,例如) A.D.
h 使用 12 小時制 (,將小時顯示為沒有前置零的數位,例如) 1:15:15 PM 。 如果這是使用者定義數值格式中唯一的字元,請使用 %h
hh 使用 12 小時制 (,將小時顯示為具有前置零的數位,例如) 01:15:15 PM
H 使用 24 小時制 (,將小時顯示為沒有前置零的數位,例如) 1:15:15 。 如果這是使用者定義數值格式中唯一的字元,請使用 %H
HH 使用 24 小時制 (,將小時顯示為具有前置零的數位,例如) 01:15:15
m 例如,將分鐘顯示為沒有前置零的數位 (,例如) 12:1:15 。 如果這是使用者定義數值格式中唯一的字元,請使用 %m
mm 例如,將分鐘顯示為具有前置零的數位 (,例如, 12:01:15) 。
s 例如, 12:15:5 將秒顯示為沒有前置零的數位,例如 () 。 如果這是使用者定義數值格式中唯一的字元,請使用 %s
ss 例如,將第二個顯示為具有前置零的數位 (, 12:15:05 例如) 。
f 顯示秒的小數。 例如 ff ,會顯示百分之一秒,而 ffff 會顯示十萬分之一秒。 您最多可以使用使用者定義格式的七 f 個符號。 如果這是使用者定義數值格式中唯一的字元,請使用 %f
t 使用 12 小時制,並顯示任何一小時前的大寫 A ;在下午 11:59 之間顯示任何一小時的大寫 P 。如果這是使用者定義數值格式中唯一的字元,請使用 %t
tt 若為使用 12 小時制的地區設定,則顯示大寫 AM ,其中包含上午 10 點到下午 11:59 之間的任何小時;顯示大寫 PM

針對使用 24 小時制的地區設定,則不顯示任何符號。
y 顯示無前置零的年份數字 (0-9)。 如果這是使用者定義數值格式中唯一的字元,請使用 %y
yy 以有前置零的兩位數值格式顯示年份 (如適用)。
yyy 以四位數值格式顯示年份。
yyyy 以四位數值格式顯示年份。
z 例如,顯示不含前置零的時區位移 (, -8 例如) 。 如果這是使用者定義數值格式中唯一的字元,請使用 %z
zz 顯示具有前置零 (的時區位移,例如, -08)
zzz 顯示 (的完整時區位移,例如) -08:00

舊版程式碼範例

以下是使用者定義日期和時間格式的 December 7, 1958, 8:50 PM, 35 seconds範例:

格式 顯示
M/d/yy 12/7/58
d-MMM 7-Dec
d-MMMM-yy 7-December-58
d MMMM 7 December
MMMM yy December 58
hh:mm tt 08:50 PM
h:mm:ss t 8:50:35 P
H:mm 20:50
H:mm:ss 20:50:35
M/d/yyyy H:mm 12/7/1958 20:50

智慧型裝置開發人員注意事項

裝置的最小時間解析是由裝置的製造商所決定。 如果裝置的時間解析度夠粗,當在該裝置上執行時, f 格式字元會傳回 0。

適用於

另請參閱