普贤教程 › 包参考
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_width | s, width, left_align, zero_pad |
sf_format | fmt, args |
其余 12 个 def(内部与辅助,可直接调用但不属稳定接口)
| 函数 | 参数 |
|---|---|
sf_int_to_base | n, base, upper |
sf_format_float | f, precision |
sf_format_scientific | f, precision, upper |
sf_pad | s, width, left_align, zero_pad |
sf_parse_spec | fmt, pos |
sf_format_one | spec, width, precision, flags, val |
has_key | d, k |
sf_sprintf2 | fmt, a |
sf_sprintf3 | fmt, a, b |
sf_sprintf4 | fmt, a, b, c |
sf_sprintf5 | fmt, a, b, c, d |
sf_sprintf6 | fmt, 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 ============================================================