Module Nums2Words
Private levels() As String = {"", " Thousand ", " Million ", " Billion ", " Trillion "}
Public Function convert(ByVal inputNum As Integer) As String
If inputNum = 0 Then Return "Zero"
Dim input As String = CStr(inputNum)
Dim output As String = ""
Dim pos As Integer = input.Length - 1
Dim chunk As String = ""
Dim level As Integer = 0
Do
chunk = input.Substring(pos, 1) & chunk
If chunk.Length = 3 Or pos = 0 Then
output = d(chunk) & levels(level) & output
chunk = ""
level += 1
End If
If pos = 0 Then Exit Do
pos -= 1
Loop
Do
If output.IndexOf(" ") <= 0 Then Exit Do
output = output.Replace(" ", " ")
Loop
Return output
End Function
Private Function d(ByVal inputNum As Integer) As String
If inputNum = 0 Then Return ""
Dim input As String = CStr(inputNum)
Dim output As String = ""
If input.Length = 3 Then
output = convertZeroToNineteen(input.Substring(0, 1)) & "Hundred "
input = input.Substring(1)
End If
Dim x As Integer = CInt(input)
If x < 20 Then
output &= convertZeroToNineteen(x)
Else
output &= convertTensDigit(input.Substring(0, 1))
If CInt(input.Substring(1)) > 0 Then
output = output.TrimEnd & "-" & convertZeroToNineteen(input.Substring(1)).TrimStart
Else
output &= convertZeroToNineteen(input.Substring(1))
End If
End If
Return output
End Function
Private Function convertZeroToNineteen(ByVal inputNum As Integer) As String
Select Case inputNum
Case 0 : Return ""
Case 1 : Return " One "
Case 2 : Return " Two "
Case 3 : Return " Three "
Case 4 : Return " Four "
Case 5 : Return " Five "
Case 6 : Return " Six "
Case 7 : Return " Seven "
Case 8 : Return " Eight "
Case 9 : Return " Nine "
Case 10 : Return " Ten "
Case 11 : Return " Eleven "
Case 12 : Return " Twelve "
Case 13 : Return " Thirteen "
Case 14 : Return " Fourteen "
Case 15 : Return " Fifteen "
Case 16 : Return " Sixteen "
Case 17 : Return " Seventeen "
Case 18 : Return " Eighteen "
Case 19 : Return " Nineteen "
End Select
Return ""
End Function
Private Function convertTensDigit(ByVal inputNum As Integer) As String
Select Case inputNum
Case 2 : Return " Twenty "
Case 3 : Return " Thirty "
Case 4 : Return " Forty "
Case 5 : Return " Fifty "
Case 6 : Return " Sixty "
Case 7 : Return " Seventy "
Case 8 : Return " Eighty "
Case 9 : Return " Ninety "
End Select
Return ""
End Function
End Module
Colorized by: CarlosAg.CodeColorizer