我有上传的文件,格式如下
先生 1
先生 2
先生 100
200 先生
300 先生
等等。
我需要做的是在 MR 10 之前添加额外的两个 00,并在 MR10-99 之前添加一个额外的 0
所以文件被格式化
001先生
010 先生
076 先生
等等。
任何帮助都会很棒!
我有上传的文件,格式如下
先生 1
先生 2
先生 100
200 先生
300 先生
等等。
我需要做的是在 MR 10 之前添加额外的两个 00,并在 MR10-99 之前添加一个额外的 0
所以文件被格式化
001先生
010 先生
076 先生
等等。
任何帮助都会很棒!
假设您将这些值存储在某些字符串中,请尝试以下操作:
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"
我有一个我认为相关的潜在解决方案,我在这里发布了它:
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 小时制时钟。
注意: 如果您使用的是最新的 ECMAScript,请参阅更新 2 ...
这是一个我喜欢的解决方案,因为它很简单,可以回答类似问题:
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)
}
但是,如果性能很重要,我建议在选择建议的解决方案之一之前通读链接的答案。
在 ES6 中,String 类现在带有一个内置padStart方法,可以将前导字符添加到字符串中。在此处查看 MDN以供参考String.prototype.padStart()。还有padEnd一种结束字符的方法。
所以在 ES6 中它变得如此简单:
var n = 123;
n.padStart(5, '0'); // 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"
这是我通常在代码中用于在数字或字符串前添加零的函数。
输入是字符串或数字 (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