I need to have a string, based on an integer, which should always have 5 digits.
Example:
myInteger = 999
formatedInteger = "00999"
What is the best way of doing this in classic ASP?
I need to have a string, based on an integer, which should always have 5 digits.
Example:
myInteger = 999
formatedInteger = "00999"
What is the best way of doing this in classic ASP?
Something like this is what I've seen most of the time:
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
You can use string manipulation functions for this.
This assumes classic ASP with VBScript (original version of the answer).
Const NUMBER_DIGITS = 5
Dim myInteger
Dim formatedInteger
myInteger = 999
formatedInteger = Right(String(NUMBER_DIGITS, "0") & myInteger, NUMBER_DIGITS)
Here an optimized version, wrapped in a function, offering variable width padding:
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)
Really, you should ask yourself why you might want this.
If this is for display purposes then it's probably best to apply a string formatting function (there will be one) to your integer, at the point of display.
On the other hand, if you need it for internal processing, i.e. you're always expecting five digits in a loop or whatever, but you're not expecting to do arithmetic on the value, then convert the integer to a string first and then do any processing.
In short, convert the integer variable to a string and store in a new variable, then use that.
Stefan, that just gave me an error: incorrect type
I've done this small function
Function formatLeadingZeros(num, charSize)
num=cstr(num)
lenNum = len(num)
if charSize > lenNum then
zerosToAdd = charSize - lenNum
for i=1 to zerosToAdd
tempStr = tempStr & "0"
next
tempStr = tempStr & num
end if
formatLeadingZeros = tempStr
End function
Can I optimize it?
Ok, now I have 3 options: use my function, Jonathan Lonowski suggestion or use Tomalak suggestion.
Which one is more optimized??
Thanks
Try this for a one-liner (well, two with error prevention):
function padZeroDigits(sVariable, iLength)
if (iLength <= len(sVariable)) then padZeroDigits = sVariable : exit function : end if
padZeroDigits = string(iLength - len(sVariable),"0") & sVariable
end function