使用jQuery在数字前添加额外的零?

我有上传的格式如此的文件

MR 1

MR 2

MR 100

MR 200

MR 300

等等。

我需要做的是在MR10之前加上额外的两个00,然后在MR10-99之前加一个额外的0

所以文件格式化

MR 001

MR 010

MR 076

等等。

任何帮助将是伟大的!

假设你将这些值存储在一些string中,试试这个:

function pad (str, max) { str = str.toString(); return str.length < max ? pad("0" + str, max) : str; } pad("3", 3); // => "003" pad("123", 3); // => "123" pad("1234", 3); // => "1234" var test = "MR 2"; var parts = test.split(" "); parts[1] = pad(parts[1], 3); parts.join(" "); // => "MR 002" 

我有一个潜在的解决scheme,我猜是相关的,我在这里发布:

https://www.facebook.com/antimatterstudios/posts/10150752380719364

基本上,你想要的最小长度为2或3,你可以调整你在这段代码中放置了多less个0

 var d = new Date(); var h = ("0"+d.getHours()).slice(-2); var m = ("0"+d.getMinutes()).slice(-2); var s = ("0"+d.getSeconds()).slice(-2); 

我知道我总是会得到一个整数作为最小(导致小时1,小时2)等,但如果你不能确定除了空string以外的任何东西,你可以做“000”+ d.getHours( ),以确保你得到最低限度。

那么你想要3个数字? 只是在我的代码中使用-3而不是-2,我只是写这个,因为我想用超级简单的方式构build一个24小时的时钟。

在这里,我从一个类似的问题的答案简单的解决scheme:

 var n = 123 String('00000' + n).slice(-5); // returns 00123 ('00000' + n).slice(-5); // returns 00123 
 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 (1, 3) = "001" //addLeadingZeros (12, 3) = "012" //addLeadingZeros (123, 3) = "123" 

这是我在我的代码中通常使用的函数,以将零join数字或string。

input是string或数字(str),以及所需的输出长度(len)。

 var PrependZeros = function (str, len) { if(typeof str === 'number' || Number(str)){ str = str.toString(); return (len - str.length > 0) ? new Array(len + 1 - str.length).join('0') + str: str; } else{ for(var i = 0,spl = str.split(' '); i < spl.length; spl[i] = (Number(spl[i])&& spl[i].length < len)?PrependZeros(spl[i],len):spl[i],str = (i == spl.length -1)?spl.join(' '):str,i++); return str; } 

};

例子:

 PrependZeros('MR 3',3); // MR 003 PrependZeros('MR 23',3); // MR 023 PrependZeros('MR 123',3); // MR 123 PrependZeros('foo bar 23',3); // foo bar 023 

如果你在空间分割,你可以使用一个简单的函数来添加前导零:

 function addZeros(n) { return (n < 10)? '00' + n : (n < 100)? '0' + n : '' + n; } 

因此,您可以testingstring的长度,如果小于6,则在空间上分割,向数字中加零,然后将它们合并回来。

或者作为正则expression式:

 function addZeros(s) { return s.replace(/ (\d$)/,' 00$1').replace(/ (\d\d)$/,' 0$1'); } 

我相信有人可以用一个replace来做,而不是两个。

编辑 – 例子

 alert(addZeros('MR 3')); // MR 003 alert(addZeros('MR 23')); // MR 023 alert(addZeros('MR 123')); // MR 123 alert(addZeros('foo bar 23')); // foo bar 023 

它将在一个string的末尾放置一个或两个零的数字,前面有一个空格。 它不关心空间之前的位。

只是为了一个笑,这是一个漫长的讨厌的方式….:
(注:我没有使用这个,我不会build议使用这个!)

 function pad(str, new_length) { ('00000000000000000000000000000000000000000000000000' + str). substr((50 + str.toString().length) - new_length, new_length) } 

我前几天就需要这样的东西,Pud而不是总是0,我想能够告诉它我想要的东西在前面。 以下是我想出的代码:

 function lpad(n, e, d) { var o = ''; if(typeof(d) === 'undefined'){ d='0'; } if(typeof(e) === 'undefined'){ e=2; } if(n.length < e){ for(var r=0; r < e - n.length; r++){ o += d; } o += n; } else { o=n; } return o; } 

其中n是你想要填充的东西,e是你想填充的权力(它应该是长度的字符数),d是你想要填充的东西。 似乎对我所需要的工作很好,但是如果“d”长度超过一个字符就会失败。

简单来说我们可以写成如下,

 for(var i=1;i<=31;i++) i=(i<10) ? '0'+i : i; 

//因为大部分时间我们需要这个date,月份或金额事项。

知道这是一个旧的post,但这是另一个简短而有效的方法: 零

编辑:dur。 如果num不是string,你可以添加:

len -= String(num).length;

别的,这都很好

 function addLeadingZeros(sNum, len) { len -= sNum.length; while (len--) sNum = '0' + sNum; return sNum; } 
 var str = "43215"; console.log("Before : \n string :"+str+"\n Length :"+str.length); var max = 9; while(str.length < max ){ str = "0" + str; } console.log("After : \n string :"+str+"\n Length :"+str.length); 

它为我工作! 要增加零,请更新“ 最大 ”variables

工作小提琴的URL: 使用jQuery在数字前添加额外的零? :

str可以是数字或string。

 formatting("hi",3); function formatting(str,len) { return ("000000"+str).slice(-len); } 

如果需要大数字,则添加更多的