2010-04-23 37 views
50

Szukasz formatowania wyjściowego (funkcja typu sprintf) w pliku node.js, ale zanim go napiszę, zastanawiałem się, czy jest coś podobnego do wbudowanego (przeszukałem dokumenty bezskutecznie) lub jeśli ktoś już napisał moduł.Czy istnieje odpowiednik sprintf dla node.js

Dziękujemy

+0

Proponuję również przeglądnięcie [tego wątku SO] (http://stackoverflow.com/questions/610406/javascript-printf-string-format). – Husky

Odpowiedz

22

Istnieją para w rejestrze npm:

+1

Zastanawiasz się, jak się tam dostał? – Shanimal

+1

Ten działa idealnie. –

+1

Nowszym jest -https: //github.com/alexei/sprintf.js – cchamberlain

56

Istnieje teraz wsparcie w postaci printf w util.format().

przykład:

util.format('hello %s', 'world'); 
// Returns: 'hello world' 
+0

Za to, co warto: 'function printf() {return process.stdout.write (util.format.apply (null, argumenty)); } –

+54

Również wsparcie w 'util.format' jest bardzo proste: nie ma'% 5d' lub '% 5.3f' ani nic podobnego, więc niestety nie jest to prawdziwe rozwiązanie typu" sprintf ". – lapo

+3

Podobny do komentarza @Elliot Foster, można również zrobić 'var printf = require ('util'). Format'; –

5

console.log działa prawidłowo.

console.log('%d hours', 4); // 4 hours 
console.log('The %2$s contains %1$d monkeys', 4, 'tree'); // The tree contains 4 monkeys 
+3

Pierwszy przykład działa na węźle 0.10.18, ale drugi całkowicie się nie udaje: 2 $/1 $ muszą być usunięte, aby rzeczywiście uzyskać interpolację parametrów, a następnie parametry muszą być w poprawnej kolejności, w przeciwnym razie otrzymasz: console.log ('% s zawiera% d małpy', 4, 'drzewo'); zwraca: 4 zawiera NaN małpy '' ' – FGM

+0

Drugi przykład działa w konsoli Chrome (v33). Per @FGM, 'console.log ('% s zawiera% d małpy', 'drzewo', 4);' działa w węźle v0.10.26. – joemaller

+1

To nawet nie działa .... – sleepycal

Powiązane problemy