JavaScriptでゼロ埋めする関数

Pocket

1桁の数「5」に「0」を追加して2桁「05」で表示するような手法を「ゼロ埋め」や「パディング」などと言います。
Excelには「TEXT」、VBAには「Format」、PHPには「sprintf」という関数がありますが、JavaScriptには見当たりません。
これを作ってみます。

なお関数を作らず、もっと簡単に処理する方法については「JavaScriptでゼロ埋めする方法」で紹介しています。

2桁限定

2桁で表示する場合は、正規表現で1桁の数のときだけを捉えて「0」を付加する、という処理をします。
正規表現で1桁の数は「/^$d$/」(または「/^[0-9]$/」)と表わします。
これに合致するときは「0$&」に置換します。「$&」は合致した全体を表します。

function zero2(n) {
  return n.toString(10).replace(/^[0-9]$/, "0$&");
}

一般

一般には元の数の桁数と揃えたい桁数の差の分だけ「0」を付加するという処理になるでしょう。
桁を求めるには対数を使い「Math.floor(Math.log(n)/Math.log(10))+1」とします。ただしn=0のときエラーになりますので場合分けをします(そもそも負の数のときは正しく処理されませんが、その辺は無視しています)。
桁数dとの差を求め、その回数だけ「0」を付加します。

function zero(n, d) {
  var z = "", nd, i;
  nd = (n === 0) ? 1 : Math.floor(Math.log(n) / Math.log(10)) + 1;
  for (i = 0; i < d - nd; i += 1) {
    z += "0";
  }
  return z + n.toString(10);
}

また桁数ではなく文字列の長さで処理することもできます。こちらの方が分かりやすいかもしれません。

function zero_str(n, d) {
  var m;
  m = n.toString(10);
  while (m.length < d) {
    m = "0" + m;
  }
  return m;
}

[ 2011年12月22日 | カテゴリー: JavaScript | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報