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"

预定义的数值格式

下表标识了预定义的数字格式名称。 这些可以按名称用作 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 使用标准的科学记数法,并且提供六个有效位数。

例如,Format(1234567, "e") 返回 1.234567e+006
D、或 d 将数字显示为字符串,该字符串包含采用十进制(以 10 为底)格式的数字值。 此选项仅支持 (Byte、、 ShortIntegerLong) 整型类型。

例如,Format(&H7F, "d") 返回 127
X、或 x 将数字显示为字符串,该字符串包含采用十六进制(以 16 为底)格式的数字值。 此选项仅支持 (Byte、、 ShortIntegerLong) 整型类型。

例如,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。 在此位置中,两个相邻的千位分隔符的缩放比例为 100 万,每个附加分隔符的附加缩放比例为 1,000。

除紧接在小数点分隔符左侧或在字符串中最右侧位置以外的任何位置中的多个千位分隔符仅被视为指定千位分隔符的使用。 在某些区域设置中,句点用作千位分隔符。 在格式化的输出中用作千位分隔符的实际字符取决于系统所识别的数字格式。 因此,即使你所在的区域将句点用作千位分隔符,也应将逗号用作格式中的千位分隔符。 格式化的字符串将以适合区域设置的正确格式显示。

例如,请考虑使用以下三个字符串:

- "#,0.",它使用千位分隔符将数字 1 亿的格式设置为字符串“100,000,000”。
- "#0,.",它使用按千分之一的缩放将数字 1 亿的格式设置为字符串“100000”。
- "#,0,.",它使用千位分隔符并按 1000 缩放将数字 1 亿的格式设置为字符串“100,000”。
(:) 时间分隔符。 在某些区域设置中,其他字符可用于表示时间分隔符。 设置时间值格式时,时间分隔符用于分隔小时、分钟和秒。 在格式化的输出中用作时间分隔符的实际字符由你的系统设置来决定。
(/) 日期分隔符。 在某些区域设置中,其他字符可用于表示日期分隔符。 设置日期值格式时,日期分隔符用于分隔日期、月份和年份。 在格式化的输出中用作日期分隔符的实际字符由你的系统设置来决定。
(E-``E+``e-``e+) 科学记数格式。 如果格式表达式包含至少一个数字占位符,0 (、、 或 #e+左侧) E-e-E+,则数字以科学格式显示,或Ee插入数字与其指数之间。 左侧的数字占位符数决定了指数中的位数。 使用 E-e- 在负指数旁边放置减号。 使用 E+e+ 在负指数旁边放置减号,在正指数旁边放置加号。 还必须在此符号的右侧包含数字占位符以获取正确的格式。
-+$ ( ) 文本字符。 这些字符是完全按照在格式字符串中键入的内容显示的。 若要显示未列出的字符,请在开头加上一个反斜杠 (\) 或用双引号 (" ") 将它括起来。
(\) 显示格式字符串中的下一个字符。 若要将具有特殊含义的字符显示为文本字符,请在开头加上一个反斜杠 (\)。 不会显示反斜杠本身。 使用反斜杠与将下一个字符放在双引号中的作用是相同的。 若要显示反斜杠,请使用两个反斜杠 (\\)。

不能显示为文本字符的字符示例包括日期格式和时间格式字符 (、、、 dyspnmt/wqh:) 、和,数字格式字符 (#0%eE、逗号和句点) ,字符串格式字符 (@&><、 和 !) 。 ca
("``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 以用户定义的时间格式显示 AM 使用 12 小时制的区域设置或 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。 带格式的日期不调整日期和时间的值。 在调用 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) 。 如果这是用户定义的数字格式中唯一的字符,请使用 %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。

适用于

另请参阅