Formatta l'intero su stringa con 5 cifre
-
08-07-2019 - |
Domanda
Devo avere una stringa, basata su un numero intero, che dovrebbe sempre avere 5 cifre.
Esempio:
myInteger = 999
formatedInteger = "00999"
Qual è il modo migliore per farlo nel classico ASP?
Soluzione
Puoi usare le funzioni di manipolazione delle stringhe per questo.
Questo presuppone il classico ASP con VBScript (versione originale della risposta).
Const NUMBER_DIGITS = 5
Dim myInteger
Dim formatedInteger
myInteger = 999
formatedInteger = Right(String(NUMBER_DIGITS, "0") & myInteger, NUMBER_DIGITS)
Qui una versione ottimizzata, racchiusa in una funzione, che offre imbottitura a larghezza variabile:
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)
Altri suggerimenti
Qualcosa del genere è ciò che ho visto il più delle volte:
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
Prova questo per un one-liner (bene, due con prevenzione degli errori):
function padZeroDigits(sVariable, iLength)
if (iLength <= len(sVariable)) then padZeroDigits = sVariable : exit function : end if
padZeroDigits = string(iLength - len(sVariable),"0") & sVariable
end function
Davvero, dovresti chiederti perché potresti volerlo.
Se questo è per scopi di visualizzazione, probabilmente è meglio applicare una funzione di formattazione delle stringhe (ce ne sarà una) al tuo numero intero, nel punto di visualizzazione.
D'altra parte, se ne hai bisogno per l'elaborazione interna, ovvero ti aspetti sempre cinque cifre in un ciclo o altro, ma non ti aspetti di fare l'aritmetica sul valore, quindi converti l'intero in una stringa prima e poi fare qualsiasi elaborazione.
In breve, converti la variabile intera in una stringa e archivia in una nuova variabile, quindi usala.