adding zeros in front of a string

微笑、不失礼 提交于 2019-12-22 06:45:26

问题


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:

  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



回答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

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