根据格式字串的定义, 将若干个输入值格式化为指定格式.
String := Format(FormatStr , Values...)
格式化字串以文本及占位符的形式构成 {Index:Format}.
{Index:Format}
Index 整数. 表示待格式化的输入值的序号, 1 表示第一个值.
Format 可选的格式限定符, 请参考以下说明.
若省略掉 index 则会对待处理序列中的下一个输入值进行格式化(即使该序列已被使用过). 例如, "{2:i} {:i}" 会将第二个和第三个输入值格式化成十进制整数并以空格分隔开来. 在省略掉 Index 时, Format 前仍必须是 :. 指定一对空的大括号将按默认格式处理下一个输入值: {}
"{2:i} {:i}"
:
{}
{{} 和 {}} 的形式可以将字符串中的大括号原样包含进来, 其他任何无用的占位符则会被原样包含到结果中去
{{}
{}}
不允许在大括号中包含空格符, 除非是作为标志所用
表示待格式化的输入值, 且后续会被插入到目标字符串中. 每个值就是一个独立的参数, 第一个值的索引是 1.
使用可变函数调用来传递一个数组
arr := [13, 240] MsgBox % Format("{2:x}{1:02x}", arr*)
每个格式说明符可按序包含如下几组类型(不含空格):
Flags Width .Precision ULT Type
Flags : 从下面的标志表选择零个或多个标志来影响输出的对齐和前缀.
Width: 整数. 控制格式化后的值的最小宽度. 对于字符, 默认的是右对齐并以空格填充, 可使用 -(左对齐) 和 0(前缀 0) 等标志加以改变
-
0
.Precision: 整数. 控制字符串, 整数位数或有效数字的最大位数; 输出结果由所定义的输出类型决定, 输出类型(Type) 的最前面必须是小数点, 指定精度会改变输出值进行截断(四舍五入) 或补全的方式. 输出类型以及每种类型如何受到精度值的影响如下(参见下表, 以了解不同输出类型的解释):
f
e
E
g
G
s
d
i
u
x
X
o
ULT [v1.1.20+]: 为字串值指定一个形式转换 -- Upper, Lower 或 Title(大写, 小写, 首字母大写(标题)), ULT 仅适用 s 类型, 例如 {:U} 或 {:.20Ts}, L T 也可以写成小写的 l t, 但小写的 u, 则是为无符号整数保留的.
{:U}
{:.20Ts}
l
t
Type: 下面类型表格中一个指示输入值将被如何解析的字符, 如果省略则默认是 s.
在给定位宽下使结果左对齐(不足位宽的右侧部分补以空格). 例如, Format("{:-10}", 1) 返回 1 .
Format("{:-10}", 1)
1
如果省略, 结果将在给定的位宽内右对齐.
+
如果输出值是带符号的类型, 则使用符号(+ 或 -) 作为前缀. 例如, Format("{:+d}", 1) 返回 +1.
Format("{:+d}", 1)
+1
如果省略, 仅在输出值是负数时显示符号(-).
如果 width 以 0 为前缀, 前导 0 将被添加直至最小宽度. 例如, Format("{:010}", 1) 返回 0000000001. 若同时使用 0 和 -, 则前者将被忽略. 如果 0 被指定为整数格式(i, u, x, X, o, d) 且同时带有精度指示 - 例如, {:04.d} - 此时的 0 会被忽略.
Format("{:010}", 1)
0000000001
{:04.d}
如果省略, 不填充.
当输出值是有符号数且为正数时, 以空格为前缀来修饰. 如果空格 和 + 同时出现时, 空格将被忽略. 例如, Format("{: 10}", 1) 返回 1.
Format("{: 10}", 1)
如果省略, 无空格.
#
当 # 和 o, x 或 X 格式一起使用时, 此标志使用 0, 0x 或 0X 的形式分别修饰任意非零的输出值. 例如, Format("{:#x}", 1) 返回 0x1.
0x
0X
Format("{:#x}", 1)
0x1
当 # 和 e, E, f, a, A 格式一起使用时, 此标志强制使输出值包含小数点. 例如, Format("{:#.0f}", 1) 返回 1..
Format("{:#.0f}", 1)
1.
当 # 和 g 或 G 一起使用时, 此标志强制使输出值包含小数点并保留末尾的 0.
当 # 和 c, d, i, u 或 s 格式一起使用时会被忽略.
Format("{:d}", 1.23)
{:#x}
0x{:x}
Format("{:X}", 255)
FF
Format("{:o}", 255)
377
Format("{:.2f}", 1)
1.00
Format("{:e}", 255)
2.550000e+002
a
Format("{:a}", 255)
0x1.fe0000p+7
A
p
Format("{:p}", 255)
000000FF
c
Chr(n)
不同于 printf, Format() 不支持大小指示. 所有的整数型和浮点型输入值都是 64-bit(64 位).
SetFormat, FormatTime
演示不同的用法.
; 简单替换 s .= Format("{2}, {1}!`r`n", "World", "Hello") ; 填充空格 s .= Format("|{:-10}|`r`n|{:10}|`r`n", "Left", "Right") ; 十六进制 s .= Format("{1:#x} {2:X} 0x{3:x}`r`n", 3735928559, 195948557, 0) ; 浮点数 s .= Format("{1:0.3f} {1:.10f}", 4*ATan(1)) ListVars ; 用 AutoHotkey 的主窗口显示等宽文本. WinWaitActive ahk_class AutoHotkey ControlSetText Edit1, %s% WinWaitClose