stringFormat

New in version 1.30.21.

语法

stringFormat(format, [args…])

参数

format 包含0个或多个占位符的字符串。

args… 可选参数,1个或多个填入格式化字符串的值。若指定,则其数量和数据类型必须与 format 中的占位符的数量和类型一致。若不指定,则直接输出 format

详情

对字符串进行格式化处理,即将用户传入的值按指定的格式进行处理后填充到字符串中。在占位符内部,可以通过格式符指定进制格式、字段宽度、精度、对齐方式等选项,以便对输出进行更精确的控制。

表一:占位符支持的数据类型列表

类型 占位符(%数据类型符号) args 示例
BOOL %b 1b, 0b, true, false
CHAR %c 'a', 97c
SHORT %h 122h
十进制整数(INT) %i 21
八进制整数 %o 31
十六进制整数(小写) %x 2f
十六进制整数(大写) %X 2F
LONG %l 25l
DATE %d 2022.01.01
MONTH %M 2022.05M
TIME %t 13:00:10.706
MINUTE %m 13:30m
SECOND %s 13:30:10
DATETIME %D 2012.06.13 13:30:10, 2012.06.13T13:30:10
TIMESTAMP %T 2012.06.13 13:30:10.008, 2012.06.13T13:30:10.008
NANOTIME %n 13:30:10.008007006
NANOTIMESTAMP %N 2012.06.13 13:30:10.008007006, 2012.06.13T13:30:10.008007006
FLOAT %f 2.1f
DOUBLE %F 2.1
SYMBOL %S symbol(["aaa", "bbb"])
STRING %W "Hello"
ANY(元组) %A (1, 45, 'sah')

注意:若字符串包含 “%” ,则须通过百分号进行转义,即写为 “%%” 。

在占位符内部(即在%与数据类型符号之间)插入一个或多个格式化操作符,对输出格式进行控制,书写形式为 %[(var)][#][±][0][m/*][.][n/*]数据类型符号

表二:以小数点为分隔,下表解释小数点前的部分支持的符号:

符号 功能 用法示例
m (一个正整数) 支持在 %f, %F, %W 中使用。
- 当占位符类型是 f 或 F 时,表示输出字符串的最小总宽度,默认使用空格填充宽度。
当 m 小于浮点数实际位数时,输出完整的浮点数(保留至小数点后六位);
当 m 大于浮点数实际位数时,默认填充空格。
- 当占位符类型是 W 时,表示输出字符串的最小位数:当 m 小于字符串长度时,
输出完整的字符串;当 m 大于字符串长度时,默认填充空格。
默认对齐方式为右对齐。
stringFormat("%10f", pi)
输出:··3.141593
stringFormat("%2f", 12345.0)
输出:12345.000000
stringFormat("%10W", "6chars")
输出:····6chars
* 与 m 功能类似,通过参数(args)指定输出字符串的宽度。
在对应的 args 中指定具体宽度数值,形式为一个元组:(宽度值,格式化字符串)
定义宽度:stringFormat("%*f", (10,pi))
输出:`··3.141593`
0 当宽度不足时,在输出的字符串前填充“0”来实现指定宽度(左对齐时,从右边开始
填充)。若不指定,则使用空格填充。
stringFormat("%010f", pi)
输出:003.141593
- 左对齐,仅适用于数值类型。若不指定该符号,则默认为右对齐。 stringFormat("%-10.3f", pi)
输出:3.142
+ 在正数前显示加号(+)。 stringFormat('%+f', pi)
输出:+3.141593
(var) 映射变量,var 只能是字典形式。不可与其他操作符混用。 employee = {"name":"Lisa Mill", "year":2010} stringFormat("%(name)W joined the company in %(year)i", employee)
输出:Lisa Mill joined the company in 2010
# 在八进制数前显示 “0o”;
在十六进制前显示 ”0x“ (当数据类型符号为 “x“时)或者 “0X”(当数据类型符号为 “X” 时)。
stringFormat("%#o", 33)
输出:0o41
stringFormat("%#X", 33)
输出:0X21

表三:小数点后的部分支持的符号(仅支持在 %f, %F 和 %W 中使用):

符号 功能 用法示例
n(一个正整数) - 当占位符类型是 f 或 F 时,表示小数点后保留位数。若 n 小于浮点数的小数位数,
则会将浮点数四舍五入至指定位数;
若该数字大于浮点数的小数位数,则会补零对齐。
- 当占位符类型是 W 时,表示保留字符串位数。n 小于字符串长度时对字符串截断,
大于字符串长度时不补充。
stringFormat("%10.5f", pi)
输出:···3.14159
stringFormat('%10.3f' , 3.1)
输出:·····3.100
stringFormat("%2.10W", "6chars")
输出:6chars
* 与 n 功能类似,在对应的 args 中指定输出字符串的小数点后的位数,形式为一个元组:
([宽度], [精度值], 格式化字符串的值)
定义小数点后位数:stringFormat("%.*f", (5,pi))
输出:3.14159
同时定义宽度与小数点位数:stringFormat("%0*.*f", (10,5,pi))
输出:···3.14159

例子

$ stringFormat("date: %d, time: %t", 2022.12.01, 10:12:45.065)
date: 2022.12.01, time: 10:12:45.065

$ stringFormat("Students account for %i%% of our customers.", 50)
Students account for 50% of our customers.

$ t = datetime(now())
$ stringFormat("The current time is %D.", t)
The current time is 2023.01.02T20:36:03.

$ a = 7.596
$ stringFormat("%-+10.5f", a)
+7.59600

$ stringFormat("%010.3f", a)
000007.596

$ product = {"item":"Eggs", "price_per_unit":2}
$ stringFormat("%(item)W: $ %(price_per_unit)i", product)
Eggs: $ 2