我有一个由47个数字组成的序列,如果长度小于47,则我必须在其右边添加0(零)。
var numbers = "42297115040000195441160020034520268610000054659";
var numbers_lenght = numbers.length;
if (numbers_lenght < 47)
numbers = numbers.concat("0");
alert(numbers);
但是我想知道一种方式,其中补码不超过> 47,而与长度<47是字符串无关。
如何做到这一点?
答案 0 :(得分:2)
您不想只连接1个0
,您想添加47 - string_length
零,对吗?您可以为此使用repeat()
:
var numbers = "123456789123";
var numbers_length = numbers.length;
if (numbers_length < 47) {
numbers = numbers.concat('0'.repeat(47 - numbers_length))
}
console.log(numbers)
console.log("length: ", numbers.length)
答案 1 :(得分:2)
在现代浏览器上,您可以在此处使用padEnd:
padEnd()方法用给定的字符串(如果需要,重复)填充当前字符串,以使结果字符串达到给定的长度。从当前字符串的末尾(右侧)开始应用填充。
var numbers = "54321";
const result = numbers.padEnd(47, '0')
console.log(result + ' :: ' + result.length);
答案 2 :(得分:1)
有几种方法。您走在正确的轨道上。您正在串联"0"
进行填充。您所缺少的是重复。
有几种解决方法。由于您似乎正在学习,因此我将从蛮力方法开始,以确保您了解其全部工作原理。
var numbers = "42297115040000195441160020034520268610000054659";
while (numbers.length < 47) {
numbers = numbers.concat("0");
}
alert(numbers);
我所做的就是将您的if
更改为while
。
也就是说,JavaScript中内置了一些可以为您完成此操作的方法。
var numbers = "42297115040000195441160020034520268610000054659";
numbers += "0".repeat(47 - numbers.length);
更具表现力:
var numbers = "42297115040000195441160020034520268610000054659";
numbers = numbers.padEnd(47, "0");
答案 3 :(得分:0)
如果仅将逻辑放在while
循环中,似乎可以完成您要尝试的工作:
var number1 = "42297115040000195441160020034520268610000054659";
var number2 = "4229711504000019";
console.log(padString(number1, 47, "0"));
console.log(padString(number2, 47, "0"));
function padString(str, minimumLength, paddingCharacter) {
while (str.length < minimumLength) {
str = str.concat(paddingCharacter);
}
return str;
}