概述
根据格式字符串对可变数量的输入值进行格式化。
语法
格式化字符串 := Format(格式字符串, 值...)
返回值
类型:字符串
返回根据指定规则格式化后的字符串。
参数说明
1. 格式字符串 (FormatStr)
- 类型:字符串
- 结构:由普通文本和占位符组成,占位符格式为
{索引:格式}
。- 索引:整数,表示使用的输入值位置(1为第一个值)。
- 省略索引时自动按顺序使用下一个值(即使该值已被使用过)。
- 示例:
"{2:i} {:i}"
使用第二个和第三个值。
- 格式:可选,包含标志、宽度、精度等(详见下文)。
- 特殊字符:
- 使用
}
和{
表示原义大括号。 - 无效占位符会直接输出,大括号内不可包含空格(除非作为标志)。
- 使用
- 索引:整数,表示使用的输入值位置(1为第一个值)。
2. 输入值 (Values)
- 类型:字符串、整数、浮点数
- 说明:
- 每个值作为独立参数传递,第一个值索引为1。
- 传递数组时需展开:
Format("{2:x}{1:02x}", 数组*)
格式指定器详解
格式指定器按顺序包含以下部分(无空格):
[标志][宽度][.精度][大小写][类型]
1. 标志 (Flags)
标志 | 说明 |
---|---|
- |
左对齐(默认右对齐),用空格填充右侧。示例:{:-10} → 1 |
+ |
强制显示正负号。示例:{:+d} → +1 |
0 |
用前导0填充宽度(与- 同时存在时无效)。示例:{:010} → 0000000001 |
空格 | 正数前加空格(与+ 同时存在时无效)。示例:{: 05d} → 0001 |
# |
对o/x/X 添加前缀0/0x/0X ;强制e/E/f 显示小数点;保留g/G 末尾零。 |
2. 宽度 (Width)
- 十进制整数,控制最小输出宽度(字符数),默认用空格填充。
3. 精度 (.Precision)
- 前缀需加小数点,影响不同类型的输出:
类型 作用 默认值 f/e/E
小数位数 6 g/G
最大有效数字数 6 s
最大字符数(超限截断) 无限制 整数类型 类似 0
前缀的宽度(默认宽度为1)1
4. 大小写转换 (ULT)
- 仅对
s
类型有效:U
:全大写L
:全小写T
:首字母大写- 示例:
{:U}
→HELLO
5. 类型 (Type)
类型 | 输入类型 | 说明 |
---|---|---|
d/i |
整数 | 有符号十进制整数。示例:{:d} → 1 |
u |
整数 | 无符号十进制整数 |
x/X |
整数 | 十六进制(小写/大写)。示例:{:X} → FF |
o |
整数 | 八进制。示例:{:o} → 377 |
f |
浮点数 | 固定小数。示例:{:.2f} → 1.00 |
e/E |
浮点数 | 科学计数法。示例:{:e} → 2.55e+02 |
g/G |
浮点数 | 自动选择 f 或 e (紧凑格式)。示例:{:g} → 3.14159 |
a/A |
浮点数 | 十六进制浮点。示例:{:a} → 0x1.fep+7 |
p |
整数 | 内存地址(十六进制)。示例:{:p} → 000000FF |
s |
字符串 | 直接输出(数值自动转字符串) |
c |
字符编码 | 单字符输出。示例:{:c} → t |
备注
- 不支持
printf
的大小指定符,所有数值均为64位。 - 相关函数:FormatTime
示例
; 基本替换 result := Format("{2}, {1}!", "World", "Hello") ; 返回 "Hello, World!" ; 对齐与填充 result := Format("|{:-10}|`n|{:10}|", "Left", "Right") ; 左对齐与右对齐 ; 进制转换 result := Format("{1:#x} {2:X} 0x{3:x}", 3735928559, 195948557, 0) ; 0xdeadbeef BADCAFE 0x0 ; 浮点格式化 result := Format("{1:0.3f} {1:.10f}", 4*ATan(1)) ; 3.142 3.1415926536