共用方式為


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 表達式中指令格式化的字串。

範例

此範例展示了該函數在使用String格式與使用者自訂格式來格式化數值的各種用途Format。 對於日期分隔符(/)、時間分隔符(:)、以及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 函數轉換的數字仍保留前置空格。

不同數值的不同格式

數位的使用者定義格式表示式可以有一到三個區段,並以分號分隔。 若StyleFormat函數參數包含預定義的數值格式之一,則只允許一個區段。

如果您使用 這是結果
僅限一個區段 格式表達式會套用至所有值。
兩個區段 第一個區段適用於正值和零;第二個套用至負值。
三個區段 第一個區段適用於正值,第二個區段會套用至負值,而第三個則套用至零。

下列範例有兩個區段:第一個區段會定義正值和零的格式;第二個區段會定義負值的格式。 由於 StyleFormat 數的參數取字串,故以引號包圍。

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

如果您包含兩者之間沒有任何分號,則會使用正值的格式來列印遺漏的區段。 例如,以下格式使用第一節格式顯示正負值,並顯示 Zero 值是否為零。

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

預先定義的數值格式

下表會識別預先定義的數值格式名稱。 這些參數可依名稱作為 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%
Pp 顯示數字為千分之一分隔符乘以100,右側附有百分比符號(%)並以一個空格分隔;總是在十進位分隔符右側顯示兩位數字。

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

例如,Format(1234567, "Scientific") 會傳回 1.23E+06
Ee 使用標準科學表示法,提供六個有效位數。

例如,Format(1234567, "e") 會傳回 1.234567e+006
Dd 將數字顯示為字串,其中包含以 Decimal (base 10) 格式的數位值。 此選項僅支援整數型別(ByteShortIntegerLong

例如,Format(&H7F, "d") 會傳回 127
Xx 以十六進位 (base 16) 格式,將數字顯示為包含數位值的字串。 此選項僅支援整數型別(ByteShortIntegerLong

例如,Format(127, "x") 會傳回 7f
Yes/No 若數字為 0 則顯示 No ;否則顯示 Yes

例如,Format(0, "Yes/No") 會傳回 No
True/False 若數字為 0 則顯示 False ;否則顯示 True

例如,Format(1, "True/False") 會傳回 True
On/Off 若數字為 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。 這個位置中的兩個相鄰千位分隔符會以 100 萬個乘以 100 萬的乘數,而每個額外分隔符的額外因數為 1,000。

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

例如,請考慮下列三個格式字串:

- "#,0.",利用千分符將數字1億格式化為「100,000,000」字串。
- "#0,.",利用一千倍的縮放將數字 100 百萬格式化為字串「1000000」。
- "#,0,.",利用千分隔符和千的縮放,將數字 100 百萬格式化為字串「100,000」。
: 時間分隔符。 在某些地區設定中,其他字元可用來表示時間分隔符。 時間分隔符會在格式化時間值時分隔小時、分和秒。 格式化輸出中用來做為時間分隔符的實際字元是由您的系統設定所決定。
/ 日期分隔符。 在某些地區設定中,其他字元可用來表示日期分隔符。 當格式化日期值時,日期分隔符會分隔日期、月份和年份。 格式化輸出中用來做為日期分隔符的實際字元取決於您的系統設定。
E-``E+``e-``e+ 科學格式。 如果格式表達式在 、 E+e-、 或 e+的左側E-至少有一個位數佔位符0(或 #),則該數字會以科學格式顯示,或Ee會插入於數字與其指數之間。 左邊的數位佔位元元數目會決定指數中的位數。 使用 E-e- 在負指數旁放置負號。 使用 E+e+ 在負指數旁加上負號,正指數旁加正號。 您也必須包含此符號右邊的數位佔位元,才能取得正確的格式設定。
- + $ ( ) 常值字元。 這些字元的顯示方式與格式字串中的類型完全相同。 若要顯示以上所列以外的字元,請在它前面加入反斜線 (\),或以雙引號將其括住 (" ")。
\ 以格式字串顯示下一個字元。 若要顯示的字元,像常值字元一樣具有特殊意義,請在它前面加入反斜線 (\)。 不會顯示反斜杠本身。 使用反斜杠與以雙引號括住下一個字元相同。 若要顯示反斜線,使用兩個反斜線 (\\)。

無法以字面字元顯示的字元範例包括日期格式與時間格式字元(a, , , &yw/tsq:#E%e0@p!h>m<ncd
"``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 DateG 顯示日期和時間。 例如: 3/12/2008 11:07:31 AM 。 日期顯示取決於您應用程式的目前文化特性值。
Long DateMedium DateD 根據您目前文化特性的長日期格式顯示日期。 例如: Wednesday, March 12, 2008
Short Dated 使用您目前文化特性的簡短日期格式來顯示日期。 例如: 3/12/2008

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

t字元AM顯示或PM數值,代表使用用戶自訂時間格式的 12 小時制區域。
f 根據您目前文化特性的格式顯示長日期和短時間。 例如: Wednesday, March 12, 2008 11:07 AM
F 根據您目前文化特性的格式,顯示較長的日期和時間。 例如: Wednesday, March 12, 2008 11:07:31 AM
g 根據您目前文化特性的格式顯示簡短的日期和短時間。 例如: 3/12/2008 11:07 AM
Mm 顯示日期的月份和日期日期。 例如: March 12

字元以 M 使用者自訂的日期格式顯示月份。 字元以 m 使用者自訂的時間格式顯示分鐘。
Rr 依據房產格式化日期 RFC1123Pattern 。 例如: Wed, 12 Mar 2008 11:07:31 GMT 。 格式化的日期不會調整日期和時間的值。 你必須先將日期/時間值調整為 GMT,然後再呼叫該 Format 函式。
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
Yy 將日期格式化為年份和月份。 例如: March, 2008

y字元以Y使用者自訂的日期格式顯示年份。

欲了解更多應用程式目前文化資訊,請參閱 Visual Basic 中的「文化如何影響字串」。

User-Defined 日期/時間格式

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

字元 描述
: 時間分隔符。 在某些地區設定中,其他字元可用來表示時間分隔符。 時間分隔符會在格式化時間值時分隔小時、分和秒。 在格式化輸出中做為時間分隔符的實際字元是由您應用程式的目前文化特性值所決定。
/ 日期分隔符。 在某些地區設定中,其他字元可用來表示日期分隔符。 當格式化日期值時,日期分隔符會分隔日期、月份和年份。 在格式化輸出中做為日期分隔符的實際字元是由您應用程式的目前文化特性所決定。
% 用來指出下列字元應該讀取為單一字母格式,而不考慮任何尾端字母。 也用來指出單一字母格式會讀取為使用者定義的格式。 如需其他詳細數據,請參閱下列內容。
d 以無前置零的數字顯示日期(例如, 1)。 如果這是你自訂數字格式中唯一的字元,請使用 %d
dd 以數字顯示日期,前置零(例如)。 01
ddd 以縮寫顯示日期(例如)。 Sun
dddd 以全名顯示當天(例如, Sunday)。
M 以無前置零的數字顯示月份(例如,一月表示為 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小時制的地區,中午前任何時刻顯示大寫;中午至晚上11:59任意小時顯示大寫AMPM

針對使用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。

適用於

另請參閱