# sprintf-js 中文文档

规范地址：https://npmcn.com/package/sprintf-js/

版本：1\.1\.3
npm 元数据更新时间：2024-10-22T17:26:19.033Z
中文译文更新时间：2026-11-05T14:58:20.267Z
软件包许可：BSD-3-Clause

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/sprintf-js
原文对照：https://npmcn.com/package/sprintf-js/?lang=original
项目主页：https://github.com/alexei/sprintf.js#readme
源码仓库：https://github.com/alexei/sprintf.js

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：39.9 kB，11 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2013-04-03T13:24:36.516Z
- 最新版本发布：2023-09-11T13:12:09.207Z
- 近 30 天下载量：413808673（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 0 个）

## 中文简介

JavaScript 短跑f 执行

## 安装

```sh
npm install sprintf-js
```

也可以使用：`pnpm add sprintf-js`、`yarn add sprintf-js`、`bun add sprintf-js`

## README

# 冲刺 -js

[![Build Status](https://travis-ci.org/alexei/sprintf.js.svg?branch=master)](https://travis-ci.org/alexei/sprintf.js) [![NPM Version](https://badge.fury.io/js/sprintf-js.svg)](https://badge.fury.io/js/sprintf-js) [![Dependency Status](https://david-dm.org/alexei/sprintf.js.svg)](https://david-dm.org/alexei/sprintf.js) [![devDependency Status](https://david-dm.org/alexei/sprintf.js/dev-status.svg)](https://david-dm.org/alexei/sprintf.js#info=devDependencies)

**冲刺 -js** 是一个完整的开源 JavaScript `sprintf` 执行《公约》的情况 **浏览器** 财务报告和审定财务报表 **节点.js**。 。 。 .

**注:截至v1.1.1,您可能需要一些旧环境的多填充. 见 [支助](https://npmcn.com/package/sprintf-js/#readme-support) 下节.**

## 使用量

```
var sprintf = require('sprintf-js').sprintf,
    vsprintf = require('sprintf-js').vsprintf

sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants')
vsprintf('The first 4 letters of the english alphabet are: %s, %s, %s and %s', ['a', 'b', 'c', 'd'])
```

## 安装

### 国家预防机制

```
npm install sprintf-js
```

### 鲍尔

```
bower install sprintf
```

## API 密码

### `sprintf`

返回格式化字符串 :

```
string sprintf(string format, mixed arg1?, mixed arg2?, ...)
```

### `vsprintf`

与 `sprintf` 但是它需要一系列的论据,而不是一些可变的论据:

```
string vsprintf(string format, array arguments?)
```

## 格式规格

格式字符串中的占位符由 `%` 并随后按以下顺序列出其中一个或多个要素:

-   可选编号后加a `$` 标记选择用于该值的参数索引。 如果没有指定,会将参数与输入字符串中的占位符排列在同一顺序.
-   可选 `+` 显示在结果前加或减数字符号。 默认情况下,只有 `-` 符号用于负数上.
-   一种可选的编目描述符,该描述用于编目的字符(如果指定的话). 可能值为 `0` 或其他任何字符,在 `'` (单引出. 默认值为 _空间_。 。 。 .
-   可选 `-` 标志,原因 `sprintf` 以左对齐这个占位符的结果。 默认是将结果对齐.
-   一个可选的号码,说明结果应该有多少个字符. 如果返回的值比这个数字短,则结果会被加成. 当使用时 `j` (JSON) 类型描述符, 粘贴长度指定缩进所用的标签大小 .
-   可选精度修饰剂,由 `.` (dot) 后面是数字, 表示浮动点数应该显示多少位数 。 当使用时 `g` 键入指定数字。 在字符串上使用时,会导致结果被截断.
-   类型描述符可以是:
    -   `%` ——产生一字 `%` 字符
    -   `b` − 作为二进制数生成整数
    -   `c` − 以 ASCII 值为字符生成整数
    -   `d` 或者说 `i` − 以已签名的小数表示整数
    -   `e` 使用科学标记生成浮标
    -   `u` − 以无符号小数生成整数
    -   `f` − 按原样产生浮标;见上文关于精确度的说明
    -   `g` − 按原样产生浮标;见上文关于精确度的说明
    -   `o` − 以八进制数表示整数
    -   `s` - 产生一个字符串
    -   `t` ——产量 `true` 或者说 `false`
    -   `T` - 得出论证的类型[1个](https://npmcn.com/package/sprintf-js/#readme-fn-1)
    -   `v` − 得出指定参数的原始值
    -   `x` − 以十六进制数( 小写) 得出整数
    -   `X` − 以十六进制数( 上) 得出整数
    -   `j` - 将 JavaScript 对象或阵列生成为 JSON 编码字符串

## 特征

### 参数交换

也可以交换参数。 也就是说,占位者的顺序不必与争论的顺序相匹配. 您可以简单地在格式字符串中注明占位符所指的参数:

```
sprintf('%2$s %3$s a %1$s', 'cracker', 'Polly', 'wants')
```

当然,你可以重复占位符,而不必增加参数的数量.

### 命名参数

格式字符串可能包含替换字段而不是位置占位符. 现在可以指某物体内的某一个密钥,而不是指某一个参数. 替换字段被圆括号所包围 - `(` 财务报告和审定财务报表 `)` - 然后从一个关键字开始,该关键字指的是一个密钥:

```
var user = {
    name: 'Dolly',
}
sprintf('Hello %(name)s', user) // Hello Dolly
```

替换字段中的关键字可选择后面插入任何关键字或索引:

```
var users = [
    {name: 'Dolly'},
    {name: 'Molly'},
    {name: 'Polly'},
]
sprintf('Hello %(users[0].name)s, %(users[1].name)s and %(users[2].name)s', {users: users}) // Hello Dolly, Molly and Polly
```

注:不支持(尚未)混合位置和命名占位符

### 计算值

您可以在一个函数中作为动态值传递, 它会被引用( 没有参数) 以计算在苍蝇上的值 .

```
sprintf('Current date and time: %s', function() { return new Date().toString() })
```

### 角 JS 语言

你用得着 `sprintf` 财务报告和审定财务报表 `vsprintf` (又作: `fmt` 财务报告和审定财务报表 `vfmt` 在您的 AngularJS 项目中。 见 `demo/`。 。 。 .

## 支助

### 节点.js

`sprintf-js` 运行在所有活动节点版本(4.x+).

### 浏览器

`sprintf-js` 应当在所有现代浏览器中工作。 从v1.1.1起,您可能需要下列多填充:

-   `String.prototype.repeat()` (任何IE) (英语)
-   `Array.isArray()` (环境倡议 < 9)
-   `Object.create()` (环境倡议 < 9)

也门

## 许可证

**冲刺 -js** 根据BSD 3-Clause许可证的规定获得许可证.

## 页:1

[1个](https://npmcn.com/package/sprintf-js/#readme-fn-ref-1) `sprintf` 不使用 `typeof` 操作员。 因此,价值 `null` 是一个 `null`,一个数组是 `array` (无) `object`),日期值为 `date` 包括:.

## 常见问题

### sprintf-js 是什么？

JavaScript 短跑f 执行

### 如何安装 sprintf-js？

在项目目录运行 npm install sprintf-js，或使用 pnpm add / yarn add / bun add。

### sprintf-js 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/sprintf-js 是否存在。

### sprintf-js 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### sprintf-js 可以商用吗？

sprintf-js 使用 BSD-3-Clause 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。另外不得用原作者名义为衍生产品背书。以上为概括，不构成法律意见，请以许可原文为准。

### sprintf-js 的下载量有多少？

根据 npm 官方下载统计，sprintf-js 在 2026/10/05 – 2026/11/03 这 30 天内被下载 413,808,673 次，日均约 13,793,622 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### sprintf-js 还在维护吗？

最新版本 1\.1\.3 发布于 2023/09/11（3 年前）；至今共发布 8 个版本，其中过去 12 个月发布了 0 个；首次发布于 2013/04/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

