Last active
December 15, 2015 11:38
-
-
Save emaillenin/5254022 to your computer and use it in GitHub Desktop.
Converts a number (a currency) into words for Indian Format.. Supports upto 9 Digits.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Function convertNumberToWordsForIndia9Digits(ByVal number As Decimal) | |
'Based on this - http://www.php.net/manual/en/function.number-format.php#108532 | |
'If you know the C# version, share it here http://blog.emaillenin.com | |
Dim words As New Hashtable | |
words.Add("0", "") | |
words.Add("1", "One") | |
words.Add("2", "Two") | |
words.Add("3", "Three") | |
words.Add("4", "Four") | |
words.Add("5", "Five") | |
words.Add("6", "Six") | |
words.Add("7", "Seven") | |
words.Add("8", "Eight") | |
words.Add("9", "Nine") | |
words.Add("10", "Ten") | |
words.Add("11", "Eleven") | |
words.Add("12", "Twelve") | |
words.Add("13", "Thirteen") | |
words.Add("14", "Fourteen") | |
words.Add("15", "Fifteen") | |
words.Add("16", "Sixteen") | |
words.Add("17", "Seventeen") | |
words.Add("18", "Eighteen") | |
words.Add("19", "Nineteen") | |
words.Add("20", "Twenty") | |
words.Add("30", "Thirty") | |
words.Add("40", "Forty") | |
words.Add("50", "Fifty") | |
words.Add("60", "Sixty") | |
words.Add("70", "Seventy") | |
words.Add("80", "Eighty") | |
words.Add("90", "Ninety") | |
Dim number_string As String = Decimal.Truncate(number).ToString | |
Dim number_length As Integer = number_string.Length | |
Dim number_array As New List(Of Integer) From {0, 0, 0, 0, 0, 0, 0, 0, 0} | |
Dim received_number_array As New List(Of Integer)(number_length - 1) | |
For i As Integer = 0 To number_length - 1 | |
received_number_array.Add(number_string.Substring(i, 1)) | |
Next | |
Dim j As Integer = 0 | |
For i = 9 - number_length To 9 - 1 | |
number_array.Item(i) = received_number_array.Item(j) | |
j += 1 | |
Next | |
Dim number_to_words_string As String = "" | |
'Finding out whether it is teen ? and then multiplying by 10, example 17 is seventeen, so if 1 is preceeded with 7 multiply 1 by 10 and add 7 to it. | |
j = 1 | |
For i As Integer = 0 To 9 - 1 | |
If i = 0 Or i = 2 Or i = 4 Or i = 7 Then | |
If number_array.Item(i) = "1" Then | |
number_array.Item(j) = 10 + number_array.Item(j) | |
number_array.Item(i) = 0 | |
End If | |
End If | |
j += 1 | |
Next | |
Dim value As Integer | |
For i As Integer = 9 - number_length To 9 - 1 | |
If i = 0 Or i = 2 Or i = 4 Or i = 7 Then | |
If i = 7 And Not number_array.Item(i) = 0 And number_length > 2 Then | |
number_to_words_string &= "and " | |
End If | |
value = number_array.Item(i) * 10 | |
ElseIf i = 8 And Not number_array.Item(i) = 0 And number_array.Item(i - 1) = 0 And number_length > 2 Then | |
number_to_words_string &= "and " | |
value = number_array.Item(i) | |
Else | |
value = number_array.Item(i) | |
End If | |
If Not value = 0 Then | |
number_to_words_string &= words.Item(value.ToString) & " " | |
End If | |
If Not i = 0 Then | |
If i = 1 Then | |
number_to_words_string &= "Crores " | |
End If | |
If i = 3 Then | |
If number_length <= 6 Then | |
number_to_words_string &= "Lakhs " | |
Else | |
If Not number_array.Item(i - 1) = 0 Or (number_array.Item(i) >= 10 And number_array.Item(i) <= 20) Then | |
number_to_words_string &= "Lakhs " | |
End If | |
End If | |
number_to_words_string &= " " | |
End If | |
If i = 5 Then | |
If number_length <= 4 Then | |
number_to_words_string &= "Thousand " | |
Else | |
If Not number_array.Item(i - 1) = 0 Or (number_array.Item(i) >= 10 And number_array.Item(i) <= 20) Then | |
number_to_words_string &= "Thousand " | |
End If | |
End If | |
End If | |
If i = 6 Then | |
If number_length <= 3 Then | |
number_to_words_string &= "Hundred " | |
Else | |
If Not number_array.Item(i) = 0 Then | |
number_to_words_string &= "Hundred " | |
End If | |
End If | |
End If | |
End If | |
Next | |
Return number_to_words_string | |
End Function |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment