27 javascript
var number = 1310;
Run Code Online (Sandbox Code Playgroud)
应该独处.
var number = 120;
Run Code Online (Sandbox Code Playgroud)
应改为"0120";
var number = 10;
Run Code Online (Sandbox Code Playgroud)
应改为"0010";
var number = 7;
Run Code Online (Sandbox Code Playgroud)
应改为"0007";
Kyl*_*ild 31
function pad_with_zeroes(number, length) {
var my_string = '' + number;
while (my_string.length < length) {
my_string = '0' + my_string;
}
return my_string;
}
Run Code Online (Sandbox Code Playgroud)
Lif*_*ack 22
在您可以使用的所有现代浏览器中
numberStr.padStart(4, "0");
Run Code Online (Sandbox Code Playgroud)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
function zeroPad(num) {
return num.toString().padStart(4, "0");
}
var numbers = [1310, 120, 10, 7];
numbers.forEach(
function(num) {
var paddedNum = zeroPad(num);
console.log(paddedNum);
}
);
Run Code Online (Sandbox Code Playgroud)
小智 14
试试这些:
('0000' + number).slice(-4);
Run Code Online (Sandbox Code Playgroud)
或者
(number+'').padStart(4,'0');
Run Code Online (Sandbox Code Playgroud)
这是另一种方式.来自我所做的事情,需要在页面加载上进行数千次.一次对一串零码进行硬编码是非常有效的CPU效率,并根据需要多次切换所需的数量.我真的很喜欢10方法的力量 - 这非常灵活.
无论如何,这和我想出的效率一样高效:
对于原始问题,请选择其中一个案例......
var number = 1310;
var number = 120;
var number = 10;
var number = 7;
Run Code Online (Sandbox Code Playgroud)
然后
// only needs to happen once
var zeroString = "00000";
// one assignment gets the padded number
var paddedNum = zeroString.substring((number + "").length, 4) + bareNum;
//output
alert("The padded number string is: " + paddedNum);
Run Code Online (Sandbox Code Playgroud)
当然,您仍需要验证输入.因为这只能在以下条件下可靠地工作:
背景故事:
我有一个需要固定长度(14位)零填充数字的情况.我想看看我能做到多么基本.它在页面加载上运行了数万次,因此效率很重要.它不太可重复使用,而且有点不优雅.除了它非常简单.
对于期望的n位填充字符串,此方法需要一串(至少)n + 1个零.索引0是字符串中的第一个字符,不会被使用,所以实际上它可以是任何东西.
另请注意,string.substring()与string.substr()不同!
var bareNum = 42 + '';
var zeroString = "000000000000000";
var paddedNum = zeroString.substring(bareNumber.length, 14) + bareNum
Run Code Online (Sandbox Code Playgroud)
这会从匹配字符串长度的位置开始从zeroString中拉出零,并继续获得所需的长度为零的零.只要第三行中的"14"是一个比zeroString中的字符数更低的整数,它会工作.
function pad(n, len) {
return (new Array(len + 1).join('0') + n).slice(-len);
}
Run Code Online (Sandbox Code Playgroud)
可能不适用于旧的 IE 版本。
//to: 0 - to left, 1 - to right
String.prototype.pad = function(_char, len, to) {
if (!this || !_char || this.length >= len) {
return this;
}
to = to || 0;
var ret = this;
var max = (len - this.length)/_char.length + 1;
while (--max) {
ret = (to) ? ret + _char : _char + ret;
}
return ret;
};
Run Code Online (Sandbox Code Playgroud)
用法:
someString.pad(neededChars, neededLength)
Run Code Online (Sandbox Code Playgroud)
例:
'332'.pad('0', 6); //'000332'
'332'.pad('0', 6, 1); //'332000'
Run Code Online (Sandbox Code Playgroud)