首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与客户端JavaScript等效的sprintf

与客户端JavaScript等效的sprintf
EN

Stack Overflow用户
提问于 2015-06-25 02:39:10
回答 1查看 8.2K关注 0票数 4

我知道console.log至少支持C语言中的printf的一些基本特性,但我很好奇如何利用console.log的实现来创建类似于sprintf的东西。我知道您不能简单地使用.bind.apply,因为console.log实际上并不返回字符串,那么有什么方法可以绕过这个问题吗?

如果这实际上是不可能的,那么还有其他一些鲜为人知的本机实现,只有几行代码就可以在JavaScript中实现JavaScript?

对于那些不知道sprintf到底是什么的人来说,以下是教程中的一些文档。下面是我要寻找的示例用法:

代码语言:javascript
复制
var string1 = sprintf("Hello, %s!", "world");
var string2 = sprintf("The answer to everything is %d.", 42);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-01 12:07:10

保持简单

代码语言:javascript
复制
var sprintf = (str, ...argv) => !argv.length ? str : 
    sprintf(str = str.replace(sprintf.token||"$", argv.shift()), ...argv);

由于Javascript自动处理数据类型,因此不需要类型选项。

如果需要填充,"15".padStart(5,"0") = ("00000"+15).slice(-5) = "00015"

用法

代码语言:javascript
复制
var sprintf = (str, ...argv) => !argv.length ? str : 
    sprintf(str = str.replace(sprintf.token||"$", argv.shift()), ...argv);

alert(sprintf("Success after $ clicks ($ seconds).", 15, 4.569));
sprintf.token = "_";
alert(sprintf("Failure after _ clicks (_ seconds).", 5, 1.569));

sprintf.token = "%";
var a = "%<br>%<br>%";
var b = sprintf("% plus % is %", 0, 1, 0 + 1);
var c = sprintf("Hello, %!", "world");
var d = sprintf("The answer to everything is %.", 42);
document.write(sprintf(a,b,c,d));

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31040306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档