我知道console.log至少支持C语言中的printf的一些基本特性,但我很好奇如何利用console.log的实现来创建类似于sprintf的东西。我知道您不能简单地使用.bind或.apply,因为console.log实际上并不返回字符串,那么有什么方法可以绕过这个问题吗?
如果这实际上是不可能的,那么还有其他一些鲜为人知的本机实现,只有几行代码就可以在JavaScript中实现JavaScript?
对于那些不知道sprintf到底是什么的人来说,以下是教程中的一些文档。下面是我要寻找的示例用法:
var string1 = sprintf("Hello, %s!", "world");
var string2 = sprintf("The answer to everything is %d.", 42);发布于 2017-05-01 12:07:10
保持简单
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"。
用法
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));
https://stackoverflow.com/questions/31040306
复制相似问题