在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个空格,如下所示:In Objective-C, how to print out N spaces? (using stringWithCharacters)
是否有简短快捷的方法让它在Javascript中运行? (比如,不使用sprintf
开源库或编写函数来执行此操作?)
更新:,在我的情况下,12实际上是一个变量,例如(i * 4)
,所以这就是为什么它不能是字符串中的硬编码空格。
答案 0 :(得分:11)
最简单的方法是使用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);
答案 1 :(得分:3)
截至2020年(可能更早),您可以使用' '.repeat(12)
:
console.log(`${' '.repeat(12)}hello`);
console.log(`${' '.repeat(3)}hello`);