Форматировать целое число в строку из 5 цифр
-
08-07-2019 - |
Вопрос
Мне нужна строка, основанная на целом числе, которая всегда должна состоять из 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
На самом деле, вам следует спросить себя, почему вам это может понадобиться.
Если это предназначено для отображения, то, вероятно, лучше всего применить функцию форматирования строки (она будет) к вашему целому числу в момент отображения.
С другой стороны, если вам это нужно для внутренней обработки, т.е.вы всегда ожидаете пять цифр в цикле или что-то в этом роде, но вы не ожидаете выполнения арифметических действий со значением, а затем сначала преобразования целого числа в строку, а затем выполнения какой-либо обработки.
Короче говоря, преобразуйте целочисленную переменную в строку и сохраните ее в новой переменной, а затем используйте ее.