如何完整完成一个不超过确定限制的字符串?

时间:2018-07-23 00:07:24

标签: javascript

我有一个由47个数字组成的序列,如果长度小于47,则我必须在其右边添加0(零)。

var numbers = "42297115040000195441160020034520268610000054659";
var numbers_lenght = numbers.length;

if (numbers_lenght < 47)
    numbers = numbers.concat("0");

    alert(numbers);

但是我想知道一种方式,其中补码不超过> 47,而与长度<47是字符串无关。

如何做到这一点?

4 个答案:

答案 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;
}