是否有一种简单的内置方法可以将格式化数据输出到Node.js中的控制台?
缩进,向左或向右对齐字段,添加前导零?
答案 0 :(得分:39)
在ES2017(ES8)中引入了两个新的(1)内置方法String.Prototype.padStart和String.Prototype.padEnd,它们执行所需的填充功能。
(1) node> = 8.2.1(如果使用--harmony标志运行,则>> = 7.5.0)
来自mdn页面的示例:
'abc'.padStart(10); // " abc"
'abc'.padStart(10, "foo"); // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padStart(8, "0"); // "00000abc"
'abc'.padStart(1); // "abc"
'abc'.padEnd(10); // "abc "
'abc'.padEnd(10, "foo"); // "abcfoofoof"
'abc'.padEnd(6, "123456"); // "abc123"
'abc'.padEnd(1); // "abc"
要将json缩进控制台,请尝试使用JSON.stringify。第三个参数提供了所需的缩进。
JSON.stringify({ a:1, b:2, c:3 }, null, 4);
// {
// "a": 1,
// "b": 2,
// "c": 3
// }
答案 1 :(得分:26)
NodeJS没有内置任何功能。 "最接近"你来的是util.format
,但遗憾的是,reference仍然没有做任何事。{/ 3}}。
您需要查看其他模块以提供更丰富的格式化体验。例如:sprintf。
Sprintf-js允许位置(0,1,2)参数和命名参数。
填充和对齐的一些示例:
var sprintf=require("sprintf-js").sprintf;
console.log(sprintf("Space Padded => %10.2f", 123.4567));
console.log(sprintf(" _ Padded => %'_10.2f", 123.4567));
console.log(sprintf(" 0 Padded => %010.2f", 123.4567));
console.log(sprintf(" Left align => %-10.2f", 123.4567));
结果:
Space Padded => 123.46
_ Padded => ____123.46
0 Padded => 0000123.46
Left align => 123.46
答案 2 :(得分:8)
如果数据是表格格式的,那么最简单的方法是使用console.table
这是代码。
console.table(
COMMANDS.map(command => {
return {
"Long Option": command.long_option,
"Short Option": command.short_option,
Description: command.description
};
})
);
不仅在Nodejs中,而且在chrome中也可以使用。
https://developer.mozilla.org/en-US/docs/Web/API/Console/table
答案 3 :(得分:6)
如果您有更简单的需求,可以查看util.format。它可以从各种参数生成字符串。如果您想要类似printf格式,可以使用sprintf包或sprintf-js包。
答案 4 :(得分:3)
您可能也喜欢string-kit和terminal-kit。
https://www.npmjs.com/package/string-kit
https://www.npmjs.com/package/terminal-kit
https://blog.soulserv.net/terminal-friendly-application-with-node-js-part-ii-moving-and-editing/
答案 5 :(得分:2)
看看Log4JS,这是对Log4j功能端口的尝试
答案 6 :(得分:0)
如果我将 util.format 和 "".padStart/"".padEnd 组合在一起,如上面帖子中所述,那么我得到了我想要的:
> console.log(util.format("%s%s","Name:".padEnd(10), "John Wall"))
Name: John Wall