常に 3 桁でなければならない日番号を出力する必要があります。3の代わりに003を書き込む必要があり、 12の代わりに012を書き込む必要があります。100より大きい場合は、フォーマットせずに出力します。使用できる正規表現または簡単なインライン スクリプトがあるかどうか、またはそれを実行して結果を返す関数を作成する必要があるかどうか疑問に思います。ありがとう!
質問する
28805 次
6 に答える
34
どうですか:
zeroFilled = ('000' + x).substr(-3)
任意の幅の場合:
zeroFilled = (new Array(width).join('0') + x).substr(-width)
コメントによると、これはより正確なようです:
lpad = function(s, width, char) {
return (s.length >= width) ? s : (new Array(width).join(char) + s).slice(-width);
}
于 2012-05-31T21:54:14.290 に答える
6
彼のブログで Samuel Mullen によるエレガントなソリューションを見つけました。作成を最適化しただけzeroes
です。
function lpad(value, padding) {
var zeroes = new Array(padding+1).join("0");
return (zeroes + value).slice(-padding);
}
使用法:lpad(12, 3)
結果"012"
于 2012-05-31T21:57:16.990 に答える
1
以下は、特定の幅になるまで数値にゼロを埋め込む単純な関数です。
function zeroFill(number, width) {
width -= number.toString().length;
if(width > 0) {
return new Array(width + (/\./.test(number) ? 2 : 1)).join('0') + number;
}
return number + ""; // always return a string
}
元の回答では関数の仕組みが説明されていなかったので、ここで説明します。
width
最初は必要な全長が含まれているため、width - number_of_digits
必要なパディング文字の数です。
new Array(len + 1).join(str)
回を繰り返しstr
len
ます。
正規表現は、小数点を含む数値の場合に追加のパディング ゼロを追加するために使用されますnumber_of_digits
。number.toString().length
于 2012-05-31T21:52:25.307 に答える
1
于 2012-05-31T21:53:52.827 に答える
1
あなたはこれを行うことができます...
("00" + day).slice(-3)
先頭にゼロが追加され.slice()
、文字列の最後の 3 つの値が常に表示されます。
于 2012-05-31T21:54:39.703 に答える
1
私は次の関数を書きます:
var pad = function(n, length) {
var str = "" + n;
if(str.length < length) str = new Array(length - str.length).join("0") + str;
return str;
};
于 2012-05-31T21:55:28.243 に答える