这是另一种方式。来自我所做的需要在页面加载时完成数千次的操作。一次硬编码一串零的 CPU 效率非常高,并根据需要多次为 pad 切分。我真的很喜欢 10 方法的强大功能——它非常灵活。
无论如何,这是我能想到的最有效的方法:
对于原始问题,选择其中一种情况...
var number = 1310;
var number = 120;
var number = 10;
var number = 7;
然后
// 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);
当然,您仍然需要验证输入。因为这只在以下条件下可靠地工作:
- zeroString 中的零个数是desired_length + 1
- 您的起始数字中的位数小于或等于您想要的长度
背景故事:
我有一个案例需要一个固定长度(14 位)的零填充数字。我想看看我能做到这一点。它在页面加载时运行数万次,因此效率很重要。它不能按原样重复使用,而且有点不雅。除了它非常非常简单。
对于所需的 n 位填充字符串,此方法需要(至少)n+1 个零的字符串。索引 0 是字符串中的第一个字符,它永远不会被使用,所以实际上,它可以是任何东西。
还要注意 string.substring() 与 string.substr() 不同!
var bareNum = 42 + '';
var zeroString = "000000000000000";
var paddedNum = zeroString.substring(bareNumber.length, 14) + bareNum
这会从与字符串长度匹配的位置开始从 zeroString 中提取零,并继续获取零到必要的长度 14。只要第三行中的“14”是小于数字的整数zeroString 中的字符,它将起作用。