Подтвердить что ты не робот

Node.js форматированный вывод консоли

Есть ли простой встроенный способ вывода форматированных данных в консоль в Node.js?

Отступ, выравнивание поля влево или вправо, добавление начальных нулей?

4b9b3361

Ответ 1

Два новых (1) встроенных метода String.Prototype.padStart и String.Prototype.padEnd были введены в ES2017 (ES8), которые выполняют требуемые функции заполнения.

(1) node >= 8.2.1 (или >= 7.5.0 при запуске с флагом --harmony)

Примеры из страницы 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
// }

Ответ 2

В NodeJS ничего не сделано для этого. "Ближайший", к которому вы пришли, - util.format, который, к сожалению, мало что делает (ссылка).

Вам нужно будет изучить другие модули, чтобы обеспечить более богатый опыт форматирования. Например: 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    

Ответ 3

Если у вас есть более простые потребности, вы можете посмотреть util.format. Он может генерировать строку из различных параметров. Если вы хотите форматировать printf, вы можете использовать sprintf или sprintf-js.

Ответ 5

Посмотрите Log4JS, что является попыткой для функционального порта Log4j