Strings.Format(Object, String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
根據格式 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指標(t
和 tt
),系統顯示的實際格式化輸出取決於程式代碼所使用的地區設定。 當開發環境中顯示時間和日期時,會使用程式代碼地區設定的簡短時間格式和簡短日期格式。
注意
對於使用 24 小時制的地區設定,AM/PM 指標 (t
和 tt
) 不會顯示任何內容。
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
函式轉換的函式會保留前置空間。
不同數值的不同格式
數位的使用者定義格式表示式可以有一到三個區段,並以分號分隔。 如果 Format
函式的 Style
自變數包含其中一個預先定義的數值格式,則只允許一個區段。
如果您使用 | 這是結果 |
---|---|
僅限一個區段 | 格式表達式會套用至所有值。 |
兩個區段 | 第一個區段適用於正值和零;第二個套用至負值。 |
三個區段 | 第一個區段適用於正值,第二個區段會套用至負值,而第三個則套用至零。 |
下列範例有兩個區段:第一個區段會定義正值和零的格式;第二個區段會定義負值的格式。 由於 Format
函式的 Style
自變數接受字串,所以會以引弧括住。
Dim style1 As String = "$#,##0;($#,##0)"
如果您包含兩者之間沒有任何分號,則會使用正值的格式來列印遺漏的區段。 例如,下列格式會使用第一個區段中的格式來顯示正值和負值,如果值為零,則會顯示 Zero
。
Dim style2 As String = "$#,##0;;\Z\e\r\o"
預先定義的數值格式
下表會識別預先定義的數值格式名稱。 這些可依名稱作為 Format
函式的 Style
自變數使用:
格式名稱 | 描述 |
---|---|
General Number 、G 或 g |
顯示沒有千位分隔符的數位。 例如, Format(&H3FA, "g") 會傳回 1018 。 |
Currency 、C 或 c |
視需要顯示具有千位分隔符的數位;會顯示小數分隔符右邊的兩位數。 輸出是以系統地區設定為基礎。 例如, Format(1234567, "c") 會傳回 $1,234,567.00 。 |
Fixed 、F 或 f |
在小數分隔符右邊顯示至少一位數和兩位數。 例如, Format(1234567, "f") 會傳回 1234567.00 。 |
Standard 、N 或 n |
顯示具有千位分隔符元的數位,左邊至少一位數,小數分隔符右邊至少有一位數。 例如, 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 |
使用標準科學表示法,提供六個有效位數。 例如, Format(1234567, "e") 會傳回 1.234567e+006 。 |
D 或 d |
將數字顯示為字串,其中包含以 Decimal (base 10) 格式的數位值。 整數型別僅支援此選項(Byte 、Short 、Integer 、Long )。例如, Format(&H7F, "d") 會傳回 127 。 |
X 或 x |
以十六進位 (base 16) 格式,將數字顯示為包含數位值的字串。 整數型別僅支援此選項(Byte 、Short 、Integer 、Long )。例如, 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/False
和 On/Off
格式。
User-Defined 數值格式
下表會識別可用來建立使用者定義數位格式的字元。 這些可用來建置 Format
函式的 Style
自變數:
字元 | 描述 |
---|---|
沒有 | 顯示沒有格式的數位。 |
(0 ) |
數位佔位元。 顯示數位或零。 如果表達式在格式字串中出現零的位置有數位,則顯示它;否則,在該位置中顯示零。 如果數位的位數比格式表達式中的零(小數點任一邊)少,則會顯示前置或尾端零。 如果數位在小數分隔符右邊的位數超過格式表示式中小數分隔符右邊的零,則會將數位四捨五入為零的十進位數。 如果數位在小數分隔符左邊的位數大於格式表達式中小數分隔符左邊的零,則不會修改顯示額外的數位。 |
(# ) |
數位佔位元。 顯示數位或無任何專案。 如果表達式在格式字串中出現 # 字元的位置有數位,則顯示它;否則,不會在該位置顯示任何專案。此符號的運作方式與 0 位數佔位元類似,但是如果數位在格式表達式中小數分隔符的任一端有 # 字元數,則不會顯示前置和尾端零。 |
(. ) |
十進位元元。 小數佔位元會決定小數分隔符的左邊和右邊顯示多少位數。 如果格式表達式只包含此符號左邊的 # 個字元;小於 1 的數位以小數分隔符開頭。 若要顯示以小數表示的前置零,請使用零作為小數分隔符左邊的第一個數位佔位元。 在某些地區設定中,會使用逗號做為小數分隔符。 做為格式化輸出中小數佔位元的實際字元,取決於您系統所辨識的數位格式。 因此,即使您在地區設定中使用逗號做為小數佔位元,您也應該使用句號做為格式的十進位佔位元。 格式化字串會以正確的地區設定格式顯示。 |
(% ) |
百分比佔位元。 將表達式乘以 100。 百分比字元 (% ) 會插入格式字串中出現的位置。 |
(, ) |
千位分隔符。 千位分隔符會將數千個分隔符分隔在小數分隔符左邊有四個以上位置的數位中。 如果格式包含以數位佔位符括住的千位分隔符,則會指定千位分隔符的標準用法(0 或 # )。小數分隔符左邊的千位分隔符(不論是否指定小數點),或字串中最右邊的字元表示「視需要將數位除以 1,000 來調整數位」。小於 1,000 但大於或等於 500 的數位會顯示為 1 ,且小於 500 的數位會顯示為 0 。 這個位置中的兩個相鄰千位分隔符會以 100 萬個乘以 100 萬的乘數,而每個額外分隔符的額外因數為 1,000。除了緊接在小數分隔符左邊或字串中最右邊的位置之外,任何位置的多個分隔符,只會被視為指定千位分隔符的使用方式。 在某些地區設定中,句點會當做千位分隔符使用。 做為格式化輸出中千位分隔符的實際字元取決於您系統所辨識的數字格式。 因此,即使您在地區設定中使用句號做為千位分隔符,您也應該使用逗號做為千位分隔符。 格式化字串會以正確的地區設定格式顯示。 例如,請考慮下列三個格式字串: - "#,0." ,它會使用千位分隔符將數位 1 億格式化為字串 “100,000,000”。- "#0,." ,它會使用1000萬的縮放比例,將數位1億格式化為字串 “100000”。- "#,0,." ,它會使用千位分隔符和縮放一千,將數位 1 億格式化為字串 “100,000”。 |
(: ) |
時間分隔符。 在某些地區設定中,其他字元可用來表示時間分隔符。 時間分隔符會在格式化時間值時分隔小時、分和秒。 格式化輸出中用來做為時間分隔符的實際字元是由您的系統設定所決定。 |
(/ ) |
日期分隔符。 在某些地區設定中,其他字元可用來表示日期分隔符。 當格式化日期值時,日期分隔符會分隔日期、月份和年份。 格式化輸出中用來做為日期分隔符的實際字元取決於您的系統設定。 |
(E-``E+``e-``e+ ) |
科學格式。 如果格式表達式至少包含 E- 、E+ 、e- 或 e+ 左邊的一個數位佔位元(0 或 # ),則會以科學格式顯示數位,並在數位與其指數之間插入 E 或 e 。 左邊的數位佔位元元數目會決定指數中的位數。 使用 E- 或 e- ,在負指數旁邊放置減號。 使用 E+ 或 e+ ,將負號放在負指數旁邊,以及正指數旁的加號。 您也必須包含此符號右邊的數位佔位元,才能取得正確的格式設定。 |
-
+
$ () |
常值字元。 這些字元的顯示方式與格式字串中的類型完全相同。 若要顯示其中一個以外的字元,請在它前面加上反斜杠(\ ),或用雙引號括住它(“ )。 |
(\ ) |
以格式字串顯示下一個字元。 若要將具有特殊意義的字元顯示為常值字元,請在字元前面加上反斜杠(\ )。 不會顯示反斜杠本身。 使用反斜杠與以雙引號括住下一個字元相同。 若要顯示反斜杠,請使用兩個反斜杠(\\ )。無法顯示為常值字元的字元範例是日期格式和時間格式字元( a 、c 、d 、h 、m 、n 、p 、q 、s 、t 、w 、y 、/ a 、c 、d 、h 、m 、n 、p 、q 、s 、t 、w 、y 、t 、w 、y 、a 、c 、d 、h 、m 、m 、n 、p 、q 、q 、s 、t 、w 、y 、a 、c 、d 、h 、m 、和 : )、數值格式字元 (# 、0 、% 、E 、e 、逗號、 和 句號),以及字串格式字元(@ 、& 、< 、> 和 ! )。 |
("``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 |
預先定義的日期/時間格式
下表會識別預先定義的日期和時間格式名稱。 這些可由 name 作為 Format
函式的樣式自變數使用:
格式名稱 | 描述 |
---|---|
General Date 或 G |
顯示日期和時間。 例如,3/12/2008 11:07:31 AM 。 日期顯示取決於您應用程式的目前文化特性值。 |
Long Date 、Medium Date 或 D |
根據您目前文化特性的長日期格式顯示日期。 例如,Wednesday, March 12, 2008 。 |
Short Date 或 d |
使用您目前文化特性的簡短日期格式來顯示日期。 例如,3/12/2008 。d 字元會以用戶定義的日期格式顯示日期。 |
Long Time 、Medium Time 或 T |
使用您目前文化特性的長期格式顯示時間;通常包括小時、分鐘、秒。 例如,11:07:31 AM 。 |
Short Time 或 t |
使用您目前文化特性的簡短時間格式顯示時間。 例如,11:07 AM 。t 字元會針對使用使用者定義的時間格式 12 小時制的地區設定顯示 AM 或 PM 值。 |
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 。 格式化的日期不會調整日期和時間的值。 您必須先將 [日期/時間] 值調整為 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 。 |
Y 、y |
將日期格式化為年份和月份。 例如,March, 2008 。Y 和 y 字元會以用戶定義的日期格式顯示年份。 |
如需應用程式目前文化特性資訊的詳細資訊,請參閱 文化特性如何影響 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 ,並顯示中午前任何一小時;會顯示大寫 PM ,中午到下午 11:59 之間的任何小時。針對使用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。