我上传的文件格式如此
MR 1
MR 2
MR 100
MR 200
MR 300
ETC。
我需要做的是在MR 10之前的任何事情之前添加额外的两个00,并在MR10-99之前添加一个额外的0
所以文件格式化
MR 001
MR 010
MR 076
ETC。
任何帮助都会很棒!
答案 0 :(得分:192)
假设您将这些值存储在某些字符串中,请尝试以下操作:
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"
答案 1 :(得分:32)
我有一个潜在的解决方案,我猜这是相关的,我在这里发布了它:
https://www.facebook.com/antimatterstudios/posts/10150752380719364
基本上,你想要一个最小长度为2或3,你可以调整你在这段代码中放置多少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等),但是如果你不能确定得到任何东西而不是空字符串,你可以做“000”+ d .getHours()以确保您获得最低限度。
那你想要3个号码吗?在我的代码中只使用-3而不是-2,我只是写这个,因为我想以超级简单的方式构建一个24小时的时钟。答案 2 :(得分:14)
这是我喜欢的解决方案,因为它来自an answer to a similar question:
var n = 123
String('00000' + n).slice(-5); // returns 00123
('00000' + n).slice(-5); // returns 00123
正如@RWC所建议的那样,你可以很好地将它包装在这样的通用函数中:
function leftPad(value, length) {
return ('0'.repeat(length) + value).slice(-length);
}
leftPad(123, 5); // returns 00123
对于那些不喜欢切片的人:
function leftPad(value, length) {
value = String(value);
length = length - value.length;
return ('0'.repeat(length) + value)
}
但如果表现很重要,我建议您在选择其中一个解决方案之前阅读相关答案。
答案 3 :(得分:7)
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"
答案 4 :(得分:4)
这是我在代码中通常使用的函数,用于将零添加到数字或字符串中。
输入是字符串或数字(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
答案 5 :(得分:2)
如果您在空格上拆分,可以使用以下简单函数添加前导零:
function addZeros(n) {
return (n < 10)? '00' + n : (n < 100)? '0' + n : '' + n;
}
因此,您可以测试字符串的长度,如果它小于6,则在空格上拆分,为数字添加零,然后将其重新连接在一起。
或者作为正则表达式:
function addZeros(s) {
return s.replace(/ (\d$)/,' 00$1').replace(/ (\d\d)$/,' 0$1');
}
我确信有人可以用一个替换而不是两个。
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
它会在字符串末尾放置一个或两个零的数字,前面有一个空格。它并不关心空间之前的位数。
答案 6 :(得分:2)
只是为了笑,这是长期讨厌的方式....: (注意:我没有使用过这个,我不建议使用它。!)
function pad(str, new_length) {
('00000000000000000000000000000000000000000000000000' + str).
substr((50 + str.toString().length) - new_length, new_length)
}
答案 7 :(得分:1)
我前几天需要这样的东西,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是你想要填充的东西。似乎能够很好地满足我的需求,但如果&#34; d&#34;在某些情况下,不止一个字符长。
答案 8 :(得分:1)
答案 9 :(得分:1)
str可以是数字或字符串。
formatting("hi",3);
function formatting(str,len)
{
return ("000000"+str).slice(-len);
}
如果需要大数字,请添加更多零
答案 10 :(得分:0)
简单来说,我们可以写成如下,
for(var i=1;i<=31;i++)
i=(i<10) ? '0'+i : i;
//因为大部分时间我们都需要这一天,月份或金额。
答案 11 :(得分:0)
知道这是一个老帖子,但这是另一个简短有效的方法:
len -= String(num).length;
否则,一切都很好
function addLeadingZeros(sNum, len) {
len -= sNum.length;
while (len--) sNum = '0' + sNum;
return sNum;
}
答案 12 :(得分:0)
通过将数字加100,然后运行一个从索引1到右侧最后一个位置的子字符串函数。
var dt = new Date();
var month = (100 + dt.getMonth()+1).toString().substr(1, 2);
var day = (100 + dt.getDate()).toString().substr(1, 2);
console.log(month,day);
从2020-11-3起您将获得此结果
11,03
我希望答案是有用的
答案 13 :(得分:-1)
尝试以下方法,该操作将通过将零前缀转换为将一位数字和两位数字转换为3位数字。
var base_number = 2;
var zero_prefixed_string = ("000" + base_number).slice(-3);