Solved

How do I spell out a number in VB.NET/ASP.NET 1.1?

Posted on 2009-05-06
1,152 Views
I have an integer that will always be a whole number between 1 and 20, but I'd like to display it for my users in it's spelled-out form. "1" would be "one", "2" would be "two", and so on up to 20. How would I go about accomplishing this in ASP.NET 1.1? Seems so simple but I could not find it on the Google.
0
Question by:CitySec

LVL 81

Expert Comment

ID: 24314859
This isn't VB.net but it should work with minimal changes.

The routine below, GetSpelledNumber, converts a real number into a spelled out number (English only). See the comments in the routine for instructions on how to use.

Examples:

GetSpelledNumber(1234) = One Thousand Two Hundred Thirty Four
GetSpelledNumber(1234.56) = One Thousand Two Hundred Thirty Four Point Five Six
GetSpelledNumber(1234.56, TRUE) = One Thousand Two Hundred Thirty Four Dollars and Fifty Six Cents

[Begin Code Segment]

Public Function GetSpelledNumber( _
ByVal Number As Double, _
Optional ByVal ReturnCurrency As Boolean, _
Optional ByVal ReturnFraction As Boolean _
) As String

' Return the number as a text string with each digit spelled out.
'
' Syntax
'
' GetSpelledNumber(Number, (ReturnCurrency])
'
' Number - Any double number.
'
' ReturnCurrency - Pass True to return the numnber as dollars and cents.
'   Optional. If omitted then False is assumed.
'
' ReturnFraction - Pass True to return any decimal number as a numeric
'   fraction versus words. When using this option, if there is no decimal
'   portion then the word "exactly" is appended to the result. Optional. If
'   omitted then False is assumed. Ignored if ReturnCurrency is True.

Dim NumberParts As Variant
Dim NumberText As String
Dim Index As Long
Dim Part As String
Dim Result As String

If Number = 0 Then
If ReturnCurrency Then
GetSpelledNumber = "No Dollars and No Cents"
Else
GetSpelledNumber = "Zero"
End If
Exit Function
End If

NumberParts = Split(Number, ".")
NumberText = NumberParts(0)
NumberText = Right("   " & NumberText, Int((Len(NumberText) + 2) / 3) * 3)
For Index = 1 To Len(NumberText) / 3
Part = GetSpelledNumberPart(CLng(Mid(NumberText, Len(NumberText) - 2 - (Index - 1) * 3, 3)))
Select Case Index
Case 1: Result = Part
Case 2: Result = Part & " Thousand " & Result
Case 3: Result = Part & " Million " & Result
Case 4: Result = Part & " Billion " & Result
Case 5: Result = Part & " Trillion " & Result
End Select
Next Index
If ReturnCurrency Then Result = Result & " Dollar" & IIf(Not Result = "One", "s", vbNullString)
If ReturnCurrency Then
Result = Result & " and "
If UBound(NumberParts) > 0 Then
Part = GetSpelledNumberPart(Round(("0." & NumberParts(1)), 2) * 100)
Else
Part = GetSpelledNumberPart(0)
End If
If Len(Part) = 0 Then
Result = Result & "No Cents"
Else
Result = Result & Part & " Cent" & IIf(Not Part = "One", "s", vbNullString)
End If
Else
If UBound(NumberParts) > 0 Then
If ReturnFraction Then
Result = Result & " and " & CLng(NumberParts(1)) & "/1" & String(Len(NumberParts(1)), "0")
Else
Result = Result & " Point"
For Index = 1 To Len(NumberParts(1))
Result = Result & " " & GetSpelledNumberPart(Mid(NumberParts(1), Index, 1))
Next Index
End If
Else
If ReturnFraction Then Result = Result & " Exactly"
End If
End If

GetSpelledNumber = Result

End Function

Private Function GetSpelledNumberPart( _
ByVal NumberPart As String _
) As String

' Return the spelled out one to three digit number. Used by GetSpelledNumber.
'
' Syntax
'
' GetSpelledNumberPart(NumberPart)
'
' NumberPart - A one to three character string containing only numeric digits.

Dim Index As Long
Dim Result As String
Dim Part As String

NumberPart = Mid(NumberPart, 1, 3)
For Index = 1 To Len(NumberPart)
Part = vbNullString
Select Case Index
Case 1, 3
Select Case Mid(NumberPart, Len(NumberPart) - Index + 1, 1)
Case 1: Part = "One"
Case 2: Part = "Two"
Case 3: Part = "Three"
Case 4: Part = "Four"
Case 5: Part = "Five"
Case 6: Part = "Six"
Case 7: Part = "Seven"
Case 8: Part = "Eight"
Case 9: Part = "Nine"
End Select
If Index = 3 Then Part = Part & " Hundred"
Case 2
Select Case Mid(NumberPart, Len(NumberPart) - Index + 1, 1)
Case 1
Result = vbNullString
Select Case Mid(NumberPart, Len(NumberPart), 1)
Case 0: Part = "Ten"
Case 1: Part = "Eleven"
Case 2: Part = "Twelve"
Case 3: Part = "Thirteen"
Case 4: Part = "Fourteen"
Case 5: Part = "Fifteen"
Case 6: Part = "Sixteen"
Case 7: Part = "Seventeen"
Case 8: Part = "Eighteen"
Case 9: Part = "Nineteen"
End Select
Case 2: Part = "Twenty"
Case 3: Part = "Thirty"
Case 4: Part = "Forty"
Case 5: Part = "Fifty"
Case 6: Part = "Sixty"
Case 7: Part = "Seventy"
Case 8: Part = "Eighty"
Case 9: Part = "Ninety"
End Select
End Select
If Len(Part) > 0 Then Result = Part & IIf(Len(Result) = 0, vbNullString, " ") & Result
Next Index

GetSpelledNumberPart = Result

End Function

[End Code Segment]

Kevin
0

LVL 4

Expert Comment

ID: 24315070
i think you just need to convert number to string , if so this simple example to do this
`````` Dim arra(,) As String = {{"0", "zero"}, {"1", "one"}, {"2", "two"}, {"3", "three"}}
Dim sentence As String = "112213"
Dim sentenceToView As String = ""
For i As Integer = 0 To sentence.Length - 1
sentenceToView = sentenceToView & arra(Convert.ToUInt32(sentence(i).ToString()), 1) & ","
Next
``````
0

LVL 46

Accepted Solution

ID: 24315505
Convert Numbers to Words with VB.NET
http://www.freevbcode.com/ShowCode.asp?ID=8704

Gary
0

Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
When designing a form there are several BorderStyles to choose from, all of which can be classified as either 'Fixed' or 'Sizable' and I'd guess that 'Fixed Single' or one of the other fixed types is the most popular choice. I assume it's the most p…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…