如何在Javascript中打印N个空格?

如何在Javascript中打印N个空格?,javascript,Javascript,在Javascript中,使用 console.log("this is %s and %s", foo, bar); 工作,所以它遵循一些C风格,但它不遵循 console.log("%*s this is %s and %s", 12, foo, bar); 其中,%*s和12将使其打印出12个空格,如本问题所示: 有没有一种简单、快速的方法可以让它在Javascript中简单地工作?(比如说,没有使用sprintf开源库或编写函数来实现它?) 更新:,在我的例子中,12实际上是一个变量

在Javascript中,使用

console.log("this is %s and %s", foo, bar);
工作,所以它遵循一些C风格,但它不遵循

console.log("%*s this is %s and %s", 12, foo, bar);
其中,
%*s
12
将使其打印出12个空格,如本问题所示:

有没有一种简单、快速的方法可以让它在Javascript中简单地工作?(比如说,没有使用
sprintf
开源库或编写函数来实现它?)


更新:,在我的例子中,12实际上是一个变量,例如
(i*4)
,因此它不能是字符串中的硬编码空格。

最简单的方法是使用Array.join:

console.log("%s this is %s and %s", Array(12 + 1).join(" "), foo, bar);
请注意,您希望数组大小为N+1


我知道您说过不需要函数,但如果您经常这样做,扩展方法可能会更简洁:

String.prototype.repeat = function(length) {
 return Array(length + 1).join(this);
};
这允许您执行以下操作:

console.log("%s this is %s and %s", " ".repeat(12), foo, bar);

到2020年或更早,您可以使用
''。重复(12)

console.log(`${'。重复(12)}hello`);

log(`${'。重复(3)}你好`)@lanzz是的,错过了。我确实理解sprintf,但AFAIK console.log不允许您重复字符。alexn的解决方案实际上可以在我的Chrome、Firefox和Safari上运行Mac@lanzzConsole.log与sprintf的实现不同。我甚至不使用
%*s
。这很聪明。我猜在一些时间有限的编程竞赛中,能够做这样的快速技巧可能会让你获得一等奖,而不是二等奖。顺便问一下,你在学校里是否参加过一些Javascript课程,使你如此精通Javascript,并知道如何用Javascript扩展这些课程?也许我在OOP时代之前就接受过CS教育,我认识的大多数同学/同事只是通过学习代码片段来学习Javascript