我上传的文件格式是这样的
MR 1
MR 2
MR 100
MR 200
MR 300
等。
我需要做的是在MR10之前添加额外的两个00,并且在MR10-99之前添加额外的0
所以文件是格式化的
MR 001
MR 010
076先生
等。
任何帮助都是最好的!
发布于 2011-06-24 17:59:58
假设您将这些值存储在一些字符串中,请尝试执行以下操作:
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"
发布于 2012-06-26 23:21:30
我有一个潜在的解决方案,我想这是相关的,我在这里发布了它:
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小时时钟。
发布于 2016-04-29 15:46:20
注意:如果您使用的是最新的ECMAScript,请参阅更新2 ...
这里有一个我喜欢的来自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)
}
但如果性能很重要,我建议在选择建议的解决方案之一之前,先通读链接答案。
更新2
在ES6中,string类现在提供了一个内置的padStart
方法,可以将前导字符添加到字符串中。在String.prototype.padStart()
上供参考的Check MDN here。还有一个用于结束字符的padEnd
方法。
所以有了ES6,事情就变得很简单了:
var n = 123;
n.padStart(5, '0'); // returns 00123
https://stackoverflow.com/questions/6466135
复制相似问题