Formato entero a cadena con 5 dígitos
-
08-07-2019 - |
Pregunta
Necesito tener una cadena, basada en un número entero, que siempre debe tener 5 dígitos.
Ejemplo:
myInteger = 999
formatedInteger = "00999"
¿Cuál es la mejor manera de hacer esto en ASP clásico?
Solución
Puede usar funciones de manipulación de cadenas para esto.
Esto supone un ASP clásico con VBScript (versión original de la respuesta).
Const NUMBER_DIGITS = 5
Dim myInteger
Dim formatedInteger
myInteger = 999
formatedInteger = Right(String(NUMBER_DIGITS, "0") & myInteger, NUMBER_DIGITS)
Aquí una versión optimizada, envuelta en una función, que ofrece relleno de ancho variable:
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)
Otros consejos
Algo como esto es lo que he visto la mayor parte del tiempo:
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
Pruebe esto para una línea (bueno, dos con prevención de errores):
function padZeroDigits(sVariable, iLength)
if (iLength <= len(sVariable)) then padZeroDigits = sVariable : exit function : end if
padZeroDigits = string(iLength - len(sVariable),"0") & sVariable
end function
Realmente, debes preguntarte por qué quieres esto.
Si esto es para fines de visualización, entonces probablemente sea mejor aplicar una función de formato de cadena (habrá una) a su entero, en el punto de visualización.
Por otro lado, si lo necesita para el procesamiento interno, es decir, siempre espera cinco dígitos en un bucle o lo que sea, pero no espera hacer aritmética en el valor, luego convierta el entero en una cadena primero y luego realice cualquier procesamiento.
En resumen, convierta la variable entera en una cadena y almacene en una nueva variable, luego úsela.