adding zeros in front of a string

人盡茶涼 提交于 2019-12-05 09:59:51

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>

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)

One more . . . this one works with:

  1. strings and numbers,
  2. handles variable lengths, and
  3. 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

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('');

Recursive solution just for the heck of it:

function padNumberString(numberString) {
    if (numberString.length >= 6) {
        return numberString;
    }
    return padNumberString('0' + numberString);
}

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"

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...

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!