使用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); }
如果需要大数字,则添加更多的零