我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
当前回答
or
function zpad(n,l){
return rep(l-n.toString().length, '0') + n.toString();
}
with
function rep(len, chr) {
return new Array(len+1).join(chr);
}
其他回答
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#test').keypress(allowOnlyTwoPositiveDigts);
});
function allowOnlyTwoPositiveDigts(e){
var test = /^[\-]?[0-9]{1,2}?$/
return test.test(this.value+String.fromCharCode(e.which))
}
</script>
</head>
<body>
<input id="test" type="text" />
</body>
</html>
快速和肮脏的一个班轮....
function zpad(n, len) {
return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}
我知道这是一个古老的帖子,但我想提供一个更灵活和面向对象的解决方案选项。
我已经推断了接受的答案,并扩展了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();
}
你可以:
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