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$&");
}
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);
}
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;
}
var m;
m = n.toString(10);
while (m.length < d) {
m = "0" + m;
}
return m;
}
コメント