Introduction
This little function is really simple, but comes in very handy. I have come across this issue many times and usually just dodge it when I can, but finally I had a project that insisted that I format some numbers this way, so alas, here I am.
Using The Code
This is just a basic function call. Send it any number greater than 0 and it will return the number formatted with a "st", "nd", "rd" or "th" after it. Sending it "" will cause an error message to be displayed.
dim iTestNumber
dim sNewNumber
dim x
sNewNum = iNum
if right(iNum, 2) = "11" or right(iNum, 2) = "12" or _
right(iNum, 2) = "13" then
sNewNum = sNewNum & "th"
else
iNum = right(iNum, 1)
select case iNum
case "1"
sNewNum = sNewNum & "st"
case "2"
sNewNum = sNewNum & "nd"
case "3"
sNewNum = sNewNum & "rd"
case ""
sNewNum = "error"
case else
sNewNum = sNewNum & "th"
end select
end if
if sNewNum = "error" then
response.write "There was an error with the date passed to the "
response.write "function. The date must be an integer greater "
response.write "than 0 and not equal to blank. Please use the "
response.write "back button to fix the problem or contact customer "
response.write "support. Thank you."
response.End
end if
buildnumber = sNewNum
end function
for x = 1 to 100
iTestNumber = x
sNewNumber = BuildNumber(iTestNumber)
response.write("This is the value sent to the function: "
response.write iTestNumber & "<br>")
response.write("This is the value returned from the function: "
response.write "sNewNumber & "<br><HR>")
next
response.end
Points of Interest
Watch out for the little catches such as "11", "12" and "13" all end in "th" rather than "st", "nd" and "rd". I think those are the only exceptions though. It should work for negative numbers, but I'm not sure why you would want to do that. But that's up to you.