Je dois avoir une chaîne, basée sur un nombre entier, qui doit toujours avoir 5 chiffres.Format entier à une chaîne de 5 chiffres
Exemple:
myInteger = 999
formatedInteger = "00999"
Quelle est la meilleure façon de le faire en ASP classique?
Je dois avoir une chaîne, basée sur un nombre entier, qui doit toujours avoir 5 chiffres.Format entier à une chaîne de 5 chiffres
Exemple:
myInteger = 999
formatedInteger = "00999"
Quelle est la meilleure façon de le faire en ASP classique?
Vous pouvez utiliser les fonctions de manipulation de chaîne pour cela.
Cela suppose ASP classique avec VBScript (version originale de la réponse).
Const NUMBER_DIGITS = 5
Dim myInteger
Dim formatedInteger
myInteger = 999
formatedInteger = Right(String(NUMBER_DIGITS, "0") & myInteger, NUMBER_DIGITS)
Voici une version optimisée, enveloppées dans une fonction, offrant un rembourrage de largeur 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)
Quelque chose comme ce que je l'ai vu la plupart du temps:
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
I comme la façon dont cette gère intrinsèquement le cas où le numéro a plus de chiffres que la largeur souhaitée. –
Vraiment, vous devriez vous demander pourquoi vous voudrez peut-être cela. Si cela est à des fins d'affichage, il est probablement préférable d'appliquer une fonction de formatage de chaîne (il y en aura une) à votre entier, au point d'affichage. D'un autre côté, si vous en avez besoin pour un traitement interne, c'est-à-dire que vous attendez toujours cinq chiffres dans une boucle ou autre, mais vous ne vous attendez pas à faire de l'arithmétique sur la valeur, chaîne d'abord, puis faire un traitement. En résumé, convertissez la variable entière en chaîne et stockez-la dans une nouvelle variable, puis utilisez-la.
Essayez ceci pour une seule ligne (ainsi, deux à la prévention des erreurs):
function padZeroDigits(sVariable, iLength)
if (iLength <= len(sVariable)) then padZeroDigits = sVariable : exit function : end if
padZeroDigits = string(iLength - len(sVariable),"0") & sVariable
end function
Je vais +1 sur celui-ci. J'aime la simplicité. Pour la question, il suffit de faire: MyString = right ("000000" & cstr (myinteger), 6) – Stefan
Oui, je vais inclure cela et l'envelopper dans une fonction. – Tomalak
J'utilise une fonction similaire mais ajoute une vérification pour le cas où le nombre a plus de chiffres que souhaité. J'aime comment la fonction de Jonathan Lonowski gère cela de manière inhérente. –