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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top