Edited at

Node.jsのconsole.logで%09dみたいなフォーマットをしたいとき

More than 5 years have passed since last update.

前の記事を書いている途中で気づいたのですが、Node.jsの util.format はC言語の printf にある %09d のようなフォーマットを使えません。console.logutil.format を使っているので、必然的に console.log もです。

ただ使えないのも困るし、しかもnpmでざっと調べてもめぼしいライブラリが見つからないので、とりあえず前の記事で使った手法をさらしておきます。

すみません、嘘です。普通にnpmから入れられるライブラリありました。

というわけで下のものはただのJSのテクニックになります。(大したものじゃない…。


zero-padding.js

/**

* 数値を0で敷き詰める
* @param {Number} n 数値
* @param {Number} length 文字列の長さ
* @return {String} n の桁数が length に満たない分を 0 で敷き詰めた文字列
*/

function zeroPadding(n,length){
n = '' + n; //string cast
return length + 1 - n.length > 0 ? Array(length + 1 - n.length).join('0') + n : n;
}

間に合わせに作ったのでかなり手抜きかつ n が小数だったときがアレなのですが大体の場合はこれでどうにかなるのではないでしょうか?

どなたかちょうどいいライブラリ見つけたら教えてください。

@Layzie@Github 様に sprintf-js というライブラリを紹介していただきました。

フォーマットの引数にオブジェクトを渡して、プロパティ名でフォーマット上からアクセスできたり等、ちょっとしたテンプレートエンジン並の機能を持っているみたいです。

きちんとした sprintf が必要なときには使ってみてください。