Node.js格式化控制台输出

时间:2013-11-07 13:52:39

标签: node.js console

是否有一种简单的内置方法可以将格式化数据输出到Node.js中的控制台?

缩进,向左或向右对齐字段,添加前导零?

7 个答案:

答案 0 :(得分:39)

在ES2017(ES8)中引入了两个新的(1)内置方法String.Prototype.padStartString.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

https://nodejs.org/dist/latest-v10.x/docs/api/console.html#console_console_table_tabulardata_properties

这是代码。

console.table(
  COMMANDS.map(command => {
    return {
      "Long Option": command.long_option,
      "Short Option": command.short_option,
      Description: command.description
    };
  })
);

您不需要外部库。 这是示例输出。您只需要传递一个数组对象。 enter image description here

不仅在Nodejs中,而且在chrome中也可以使用。

https://developer.mozilla.org/en-US/docs/Web/API/Console/table

enter image description here

答案 3 :(得分:6)

如果您有更简单的需求,可以查看util.format。它可以从各种参数生成字符串。如果您想要类似printf格式,可以使用sprintf包或sprintf-js包。

答案 4 :(得分:3)

答案 5 :(得分:2)

看看Log4JS,这是对Log4j功能端口的尝试

答案 6 :(得分:0)

如果我将 util.format 和 "".padStart/"".padEnd 组合在一起,如上面帖子中所述,那么我得到了我想要的:

> console.log(util.format("%s%s","Name:".padEnd(10), "John Wall"))
Name:     John Wall