Вопрос

Мне нужна строка, основанная на целом числе, которая всегда должна состоять из 5 цифр.

Пример:

myInteger = 999
formatedInteger = "00999"

Как лучше всего это сделать в классическом ASP?

Это было полезно?

Решение

Для этого вы можете использовать функции манипулирования строками.

Это предполагает классический ASP с VBScript (исходная версия ответа).

Const NUMBER_DIGITS = 5

Dim myInteger
Dim formatedInteger

myInteger = 999
formatedInteger = Right(String(NUMBER_DIGITS, "0") & myInteger, NUMBER_DIGITS)

Вот оптимизированная версия, заключенная в функцию, предлагающая отступы переменной ширины:

Const NUMBER_PADDING = "000000000000" ' a few zeroes more just to make sure

Function ZeroPadInteger(i, numberOfDigits)
  ZeroPadInteger = Right(NUMBER_PADDING & i, numberOfDigits)
End Function

' Call in code:

strNumber = ZeroPadInteger(myInteger, 5)

Другие советы

Что-то вроде этого я видел большую часть времени:

function PadNumber(number, width)
   dim padded : padded = cStr(number)

   while (len(padded) < width)
       padded = "0" & padded
   wend

   PadNumber = padded
end function

PadNumber(999, 5) '00999

Попробуйте это для однострочника (ну, двух с предотвращением ошибок):

function padZeroDigits(sVariable, iLength)
    if (iLength <= len(sVariable)) then padZeroDigits = sVariable : exit function : end if
    padZeroDigits = string(iLength - len(sVariable),"0") & sVariable
end function

На самом деле, вам следует спросить себя, почему вам это может понадобиться.

Если это предназначено для отображения, то, вероятно, лучше всего применить функцию форматирования строки (она будет) к вашему целому числу в момент отображения.

С другой стороны, если вам это нужно для внутренней обработки, т.е.вы всегда ожидаете пять цифр в цикле или что-то в этом роде, но вы не ожидаете выполнения арифметических действий со значением, а затем сначала преобразования целого числа в строку, а затем выполнения какой-либо обработки.

Короче говоря, преобразуйте целочисленную переменную в строку и сохраните ее в новой переменной, а затем используйте ее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top