我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。

JavaScript中有数字格式化器吗?


当前回答

在所有现代浏览器中都可以使用

numberStr.padStart(2, "0");

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

函数 zeroPad(numberStr) { 返回 numberStr.padStart(2, “0”); } 变量数 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 数字.forEach( 函数(数字) { var numString = num.toString(); var ppadNum = zeroPad(numString); console.log(填充数字); } );

其他回答

我知道这是一个古老的帖子,但我想提供一个更灵活和面向对象的解决方案选项。

我已经推断了接受的答案,并扩展了javascript的Number对象,以允许可调的零填充:

Number.prototype.zeroPad =函数(数字){ Var循环=数字; Var 0 = ""; While(循环){ 零+= "0"; 循环,; } 返回(this.toString()。长度为>位数)? this. tostring ():(0 + this).slice(-digits); } Var v = 5; console.log (v.zeroPad (2));//返回"05" console.log (v.zeroPad (4));//返回"0005"

编辑:添加代码以防止截断比要求的数字更长的数字。

注意:除了IE,这在其他所有浏览器中都是过时的。请改用padStart()。

这是我的版本。可以很容易地适应其他场景。

function setNumericFormat(value) {
    var length = value.toString().length;
    if (length < 4) {
        var prefix = "";
        for (var i = 1; i <= 4 - length; i++) {
            prefix += "0";
        }
        return prefix + value.toString();
    }
    return  value.toString();
}

JavaScript没有内置的数字格式化器,但是有一些库可以实现这个功能:

下划线。String提供了sprintf函数(以及许多其他有用的格式化方法) Javascript-sprintf,其中下划线。字符串借用。

似乎你得到的是一个字符串,而不是一个数字。用这个:

var num = document.getElementById('input').value,
    replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;

这里有一个例子:http://jsfiddle.net/xtgFp/

你可以:

function pad2(number) {
   return (number < 10 ? '0' : '') + number
}

例子:

document.write(pad2(0) + '<br />');
document.write(pad2(1) + '<br />');
document.write(pad2(2) + '<br />');
document.write(pad2(10) + '<br />');
document.write(pad2(15) + '<br />');

结果:

00
01
02
10
15