Ноль-обивка ряд шесть цифр


Это инструкция Switch в JavaScript. У меня ощущение, что это может быть сделано в более короткий путь.

switch(n.length){
  case 1:
    n = '00000' + n;
  break;
  case 2:
    n = '0000' + n;
  break;
  case 3:
    n = '000' + n;
  break;
  case 4:
    n = '00' + n;
  break;
  case 5:
    n = '0' + n;
  break;
}


934
8
задан 6 ноября 2011 в 11:11 Источник Поделиться
Комментарии
4 ответа

function foobar(n)
{
var zeroes = "000000";
return zeroes.substr(n.length) + n.toString();
}

22
ответ дан 6 ноября 2011 в 12:11 Источник Поделиться

Ну, значение п известно в каждом конкретном случае, так что вы можете просто положить его в строку:

switch(n) {
case 1:
n = '000001';
break;
case 2:
n = '00002';
break;
case 3:
n = '0003';
break;
case 4:
n = '004';
break;
case 5:
n = '05';
break;
}

Если н может иметь только одно из этих значений, вы можете использовать его как индекс в массиве:

n = ['000001','00002','0003','004','05'][n - 1];

Редактировать:

С отредактированным кодом (с помощью Н.длина в переключателе), это будет:

n = ['00000','0000','000','00','0'][n.length - 1] + n;

7
ответ дан 6 ноября 2011 в 01:11 Источник Поделиться

Похоже, вы пытаетесь реализовать часть функционала е.
Использовать одну из существующих реализаций, например, дайвинг.в.javascript'ОМ ОМ
чтобы сделать ноль-обивка:

n = sprintf("%06d", n);

6
ответ дан 5 января 2012 в 06:01 Источник Поделиться

В настоящее время других ответов не обеспечивают надежный способ сделать это. Они либо использовать магические числа или создать длинные строки нулей вручную. Поэтому я добавляю этот ответ в качестве ссылки для всех, кто посещает этот вопрос в будущем.

Мы можем создать отступы присоединившись к пустой массив вместе. Я предоставил два варианта: прямой код или функцию для повторного использования.

Прямой Код:

var desiredLength = 6;

if (n.length < desiredLength) {
n = Array(desiredLength - n.length + 1).join("0") + n;
}

Функции:

function padTo(length, str, ch) {
if (str.length < length) {
return Array(length - str.length + 1).join(ch) + str;
}

return str;
}

// Usage
padTo(6, "3", "0")); // 000003

2
ответ дан 4 февраля 2012 в 04:02 Источник Поделиться