2008-11-17 6 views
4

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?

Répondre

9

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) 
+0

Je vais +1 sur celui-ci. J'aime la simplicité. Pour la question, il suffit de faire: MyString = right ("000000" & cstr (myinteger), 6) – Stefan

+0

Oui, je vais inclure cela et l'envelopper dans une fonction. – Tomalak

+0

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. –

1

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 
+0

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. –

0

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.

1

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 
Questions connexes