我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
当前回答
这是一个简单的数字填充函数,我经常使用。它允许任意数量的填充。
function leftPad(number, targetLength) {
var output = number + '';
while (output.length < targetLength) {
output = '0' + output;
}
return output;
}
例子:
leftPad(1, 2) // 01
leftPad(10, 2) // 10
leftPad(100, 2) // 100
leftPad(1, 3) // 001
leftPad(1, 8) // 00000001
其他回答
这是一个老问题,但我想补充一下。在现代浏览器中,你可以使用repeat来简化正数格式:
('0'.repeat(digits - 1) + num).substr(-digits)
如果你想要支持IE并且知道最大数字数(例如,10位):
('000000000' + num).substr(-digits)
对于负整数:
(num < 0 ? '-' : '') + ('000000000' + Math.abs(num)).substr(-digits)
对于正数显式使用+:
['-', '', '+'][Math.sign(num) + 1] + ('000000000' + Math.abs(num)).substr(-digits)
这里有一个非常简单的解决方法,对我来说很有效。
首先声明一个变量来保存你的号码。
var number;
现在将数字转换为字符串,并将其保存在另一个变量中;
var numberStr = number.toString();
现在你可以测试这个字符串的长度,如果它小于你想要的长度,你可以在开头追加一个' 0 '。
if(numberStr.length < 2){
number = '0' + number;
}
现在根据需要使用数字
console.log(number);
“${}数量”.replace (/ ^ (\ d) /美元,' 0 $ 1 ');
正则表达式是最好的。
这很简单,而且效果很好:
function twoDigit(number) {
var twodigit = number >= 10 ? number : "0"+number.toString();
return twodigit;
}
似乎你得到的是一个字符串,而不是一个数字。用这个:
var num = document.getElementById('input').value,
replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
这里有一个例子:http://jsfiddle.net/xtgFp/