问题
I need your help.
I'd like to create a function that would add some zeros in front of a number. The maximum numbers of digits that the total string should have is 6. Here are examples:
9 -> 000009
14 -> 000014
230 -> 000230
1459 -> 001459
21055 -> 021055
987632 -> 987632 (Do nothing, there's already 6 digits)
回答1:
A simple one line solution without any loops
Works with IE5-11, Firefox, Chrome, etc. Assumes integer input.
function pad(n) { return ("000000" + n).slice(-6); }
Run snippet to test:
<html>
<body>
<input id="stdin" placeholder="enter a number" maxlength="6"><button onclick="test()">Test</button>
<textarea id="stdout" style="width:100%;height:20em;padding:1em;"></textarea>
<script type="text/javascript">
function pad(n) { return ("000000" + n).slice(-6); }
function test() {
var n = parseInt( document.getElementById('stdin').value);
var e = document.getElementById('stdout').innerHTML += n + ' = ' + pad(n) + '\n';
}
</script>
</body>
</html>
回答2:
The following will add a zero to the string of numbers until the length is equal to 6.
var s = '9876'
while(s.length < 6){
s = '0' + s
}
alert(s)
回答3:
One more . . . this one works with:
- strings and numbers,
- handles variable lengths, and
- lets you chose the padding character
Code:
function padZerosToLength (value, minLength, padChar) {
var iValLength= value.toString().length;
return ((new Array((minLength + 1) - iValLength).join(padChar)) + value);
}
Here are some sample results with varying input:
padZerosToLength(1, 6, 0); ===> 000001
padZerosToLength(12, 6, 0); ===> 000012
padZerosToLength(123, 6, 0); ===> 000123
padZerosToLength(1234, 6, 0); ===> 001234
padZerosToLength(12345, 6, 0); ===> 012345
padZerosToLength(123456, 6, 0); ===> 123456
. . . with varying length:
padZerosToLength(1, 1, 0); ===> 1
padZerosToLength(1, 2, 0); ===> 01
padZerosToLength(1, 3, 0); ===> 001
padZerosToLength(1, 4, 0); ===> 0001
padZerosToLength(1, 5, 0); ===> 00001
padZerosToLength(1, 6, 0); ===> 000001
. . . and with varying padding character:
padZerosToLength(1, 6, 0); ===> 000001
padZerosToLength(1, 6, 1); ===> 111111
padZerosToLength(1, 6, "x"); ===> xxxxx1
padZerosToLength(1, 6, "."); ===> .....1
padZerosToLength(1, 6, " "); ===> 1
padZerosToLength(1, 6, "\u25CF"); ===> ●●●●●1
回答4:
You will need to convert the number to a string. Then I would split that string to an array and then add '0' to the front of that array until the length is 6. Then join. Check out this repl or see the code below: http://repl.it/piT
var num = 14;
var lengthOfNum = 6;
var numString = num.toString();
var numArray = numString.split('');
var returnString = '';
while (numArray.length < 6) {
numArray.unshift('0');
}
returnString = numArray.join('');
回答5:
Recursive solution just for the heck of it:
function padNumberString(numberString) {
if (numberString.length >= 6) {
return numberString;
}
return padNumberString('0' + numberString);
}
回答6:
A simple solution would be
function addLeadingZeros (n, length)
{
var str = (n > 0 ? n : -n) + "";
var zeros = "";
for (var i = length - str.length; i > 0; i--)
zeros += "0";
zeros += str;
return n >= 0 ? zeros : "-" + zeros;
}
//addLeadingZeros (9, 3) = "009"
//addLeadingZeros (15, 3) = "015"
//addLeadingZeros (333, 3) = "333"
回答7:
I have been using the SugarJs API for a long time and their padding feature works great.
http://sugarjs.com/api/Number/pad
(9).pad(6, true) --> 000009
(14).pad(6, true) --> 000014
etc...
来源:https://stackoverflow.com/questions/30490968/adding-zeros-in-front-of-a-string