px普贤教程PuXian
普贤教程 › 包参考

sprintf 包

C 风格格式化字符串

项值
包名sprintf
版本0.2.0
可用版本0.1.0 / 0.2.0
入口sprintf.px
分类文本与中文处理
文件数 / 行数1 / 363

安装与引入

bash
pxpkg init          # 首次
pxpkg add sprintf@0.2.0
pxpkg install
px
import sprintf
所属分类教程:文本与中文处理

公开接口

函数参数
sf_apply_widths, width, left_align, zero_pad
sf_formatfmt, args
其余 12 个 def(内部与辅助,可直接调用但不属稳定接口)
函数参数
sf_int_to_basen, base, upper
sf_format_floatf, precision
sf_format_scientificf, precision, upper
sf_pads, width, left_align, zero_pad
sf_parse_specfmt, pos
sf_format_onespec, width, precision, flags, val
has_keyd, k
sf_sprintf2fmt, a
sf_sprintf3fmt, a, b
sf_sprintf4fmt, a, b, c
sf_sprintf5fmt, a, b, c, d
sf_sprintf6fmt, a, b, c, d, e

包内说明(源码头注释)

text
============================================================
普贤生态库:registry/sprintf —— C 风格格式化字符串
------------------------------------------------------------
纯函数库,双模式一致。

实现要点:所有 spec 统一走 sf_apply_width() —— 先把符号(- + 空格)摘出来,
再在「符号与数字之间」补零;左对齐时用空格补在右边。
同时对 %s 不再做零填充(C 里 0 标志对字符串无定义,按空格处理)。
对齐 PHP sprintf / printf / vsprintf、C99 sprintf、Python % 格式化心智:
sf_format(fmt, args)  → "Hello %s, you are %d" + ["World", 25] → "Hello World, you are 25"
sf_sprintf(fmt, ...)  → 可变参数形式(内部转 list)

支持的转换说明符:
%d / %i  → 有符号整数
%u       → 无符号整数
%f       → 浮点数(默认 6 位小数)
%s       → 字符串
%x       → 十六进制小写
%X       → 十六进制大写
%o       → 八进制
%b       → 二进制
%e       → 科学计数法小写
%E       → 科学计数法大写
%c       → 字符(整数→ASCII)
%%       → 字面量 %

支持的标志和宽度:
%[flags][width][.precision]specifier
flags:  - (左对齐), 0 (零填充), + (正数显式+), 空格 (正数前导空格)
width:  最小字段宽度
precision: .n → 浮点小数位 / 字符串最大宽度

限制:
- 不支持 %g / %G(自动选择 %e 或 %f)
- 不支持 * 动态宽度/精度
- 不支持参数位置交换 %1$d
============================================================