Refer the Below Sample code for your reference and implement it as per your code logic.
HTML
<div>
<asp:DropDownList ID="ddlcrore" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlcrore_SelectedIndex_Changed">
<asp:ListItem Text="0" Value="0"></asp:ListItem>
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
<asp:ListItem Text="4" Value="4"></asp:ListItem>
<asp:ListItem Text="5" Value="5"></asp:ListItem>
<asp:ListItem Text="6" Value="6"></asp:ListItem>
<asp:ListItem Text="7" Value="7"></asp:ListItem>
<asp:ListItem Text="8" Value="8"></asp:ListItem>
<asp:ListItem Text="9" Value="9"></asp:ListItem>
<asp:ListItem Text="10" Value="10"></asp:ListItem>
<asp:ListItem Text="11" Value="11"></asp:ListItem>
<asp:ListItem Text="12" Value="12"></asp:ListItem>
<asp:ListItem Text="13" Value="13"></asp:ListItem>
<asp:ListItem Text="14" Value="14"></asp:ListItem>
<asp:ListItem Text="15" Value="15"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddlLac" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlLac_SelectedIndex_Changed">
<asp:ListItem Text="0" Value="0"></asp:ListItem>
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
<asp:ListItem Text="4" Value="4"></asp:ListItem>
<asp:ListItem Text="5" Value="5"></asp:ListItem>
<asp:ListItem Text="6" Value="6"></asp:ListItem>
<asp:ListItem Text="7" Value="7"></asp:ListItem>
<asp:ListItem Text="8" Value="8"></asp:ListItem>
<asp:ListItem Text="9" Value="9"></asp:ListItem>
<asp:ListItem Text="10" Value="10"></asp:ListItem>
<asp:ListItem Text="11" Value="11"></asp:ListItem>
<asp:ListItem Text="12" Value="12"></asp:ListItem>
<asp:ListItem Text="13" Value="13"></asp:ListItem>
<asp:ListItem Text="14" Value="14"></asp:ListItem>
<asp:ListItem Text="15" Value="15"></asp:ListItem>
<asp:ListItem Text="16" Value="16"></asp:ListItem>
<asp:ListItem Text="17" Value="17"></asp:ListItem>
<asp:ListItem Text="18" Value="18"></asp:ListItem>
<asp:ListItem Text="19" Value="19"></asp:ListItem>
<asp:ListItem Text="20" Value="20"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="ddlthousand" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlthousand_SelectedIndex_changed">
<asp:ListItem Text="0" Value="0"></asp:ListItem>
<asp:ListItem Text="1" Value="1"></asp:ListItem>
<asp:ListItem Text="2" Value="2"></asp:ListItem>
<asp:ListItem Text="3" Value="3"></asp:ListItem>
<asp:ListItem Text="4" Value="4"></asp:ListItem>
<asp:ListItem Text="5" Value="5"></asp:ListItem>
<asp:ListItem Text="6" Value="6"></asp:ListItem>
<asp:ListItem Text="7" Value="7"></asp:ListItem>
<asp:ListItem Text="8" Value="8"></asp:ListItem>
<asp:ListItem Text="9" Value="9"></asp:ListItem>
<asp:ListItem Text="10" Value="10"></asp:ListItem>
<asp:ListItem Text="11" Value="11"></asp:ListItem>
<asp:ListItem Text="12" Value="12"></asp:ListItem>
<asp:ListItem Text="13" Value="13"></asp:ListItem>
<asp:ListItem Text="14" Value="14"></asp:ListItem>
<asp:ListItem Text="15" Value="15"></asp:ListItem>
<asp:ListItem Text="16" Value="16"></asp:ListItem>
<asp:ListItem Text="17" Value="17"></asp:ListItem>
<asp:ListItem Text="18" Value="18"></asp:ListItem>
<asp:ListItem Text="19" Value="19"></asp:ListItem>
<asp:ListItem Text="20" Value="20"></asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:TextBox ID="txtConvertion_Result" runat="server"></asp:TextBox>
<br />
<asp:Button ID="btnConvert" runat="server" OnClick="ConvertNumTowords" Text="Convert Number To words" />
<br />
<asp:Label ID="lblWords" runat="server" Visible="false"></asp:Label>
<br />
<asp:Label ID="lblWords2" runat="server" Visible="false"></asp:Label>
</div>
C#
protected void ddlcrore_SelectedIndex_Changed(object sender, EventArgs e)
{
if (ddlcrore.SelectedValue != "-1")
{
string crore = ToLong(ddlcrore.SelectedItem.Text.Trim() + " 10000000").ToString();
string lac = ToLong(ddlLac.SelectedItem.Text.Trim() + " 100000").ToString();
string thousand = ToLong(ddlthousand.SelectedItem.Text.Trim() + " 1000").ToString();
txtConvertion_Result.Text = (Convert.ToDecimal(crore) + Convert.ToDecimal(lac) + Convert.ToDecimal(thousand))
.ToString("N0", System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"));
}
}
protected void ddlLac_SelectedIndex_Changed(object sender, EventArgs e)
{
if (ddlLac.SelectedValue != "-1")
{
string crore = ToLong(ddlcrore.SelectedItem.Text.Trim() + " 10000000").ToString();
string lac = ToLong(ddlLac.SelectedItem.Text.Trim() + " 100000").ToString();
string thousand = ToLong(ddlthousand.SelectedItem.Text.Trim() + " 1000").ToString();
txtConvertion_Result.Text = (Convert.ToDecimal(crore) + Convert.ToDecimal(lac) + Convert.ToDecimal(thousand))
.ToString("N0", System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"));
}
}
protected void ddlthousand_SelectedIndex_changed(object sender, EventArgs e)
{
if (ddlthousand.SelectedValue != "-1")
{
string crore = ToLong(ddlcrore.SelectedItem.Text.Trim() + " 10000000").ToString();
string lac = ToLong(ddlLac.SelectedItem.Text.Trim() + " 100000").ToString();
string thousand = ToLong(ddlthousand.SelectedItem.Text.Trim() + " 1000").ToString();
txtConvertion_Result.Text = (Convert.ToDecimal(crore) + Convert.ToDecimal(lac) + Convert.ToDecimal(thousand))
.ToString("N0", System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"));
}
}
private static Dictionary<string, long> numberTable = new Dictionary<string, long> {
{"0",0},{"1",1},{"2",2},{"3",3},{"4",4},
{"5",5},{"6",6},{"7",7},{"8",8},{"9",9},
{"10",10},{"11",11},{"12",12},{"13",13},
{"14",14},{"15",15},{"16",16},
{"17",17},{"18",18},{"19",19},{"20",20},
{"21",21},{"22",22},{"23",23},{"24",24},
{"25",25},{"26",26},{"27",27},{"28",28},
{"29",29},{"30",30},{"31",31},{"32",32},
{"33",33},{"34",34},{"35",35},{"36",36},
{"37",37},{"38",38},{"39",39},{"40",40},
{"41",41},{"42",42},{"43",43},{"44",44},
{"45",45},{"46",46},{"47",47},{"48",48},
{"49",49},{"50",50},{"51",51},{"52",52},
{ "53",53},{"54",54},{"55",55},{"56",56},
{"57",57},{"58",58},{"59",59},{"60",60},
{"61",61},{"62",62},{"63",63},{"64",64},
{"65",65},{"66",66},{"67",67},{"68",68},
{"69",69},{"70",70},{"71",71},{"72",72},
{"73",73},{"74",74},{"75",75},{"76",76},
{"77",77},{"78",78},{"79",79},{"80",80},
{"81",81},{"82",82},{"83",83},{"84",84},
{"85",85},{"86",86},{"87",87},{"88",88},
{"89",89},{"90",90},{"91",91},{"92",92},
{"93",93},{"94",94},{"95",95},{"96",96},
{"97",97},{"98",98},{"99",99},{"100",100},
{ "101",101},{"102",102},{"103",103},{"104",104},
{"105",105},{"106",106},{"107",107},{"108",108},
{"109",109},{"110",110},{"111",111},{"112",112},
{"1000",1000},{"100000",100000},{"10000000",10000000}};
public static long ToLong(string numberString)
{
var numbers = Regex.Matches(numberString, @"\w+").Cast<Match>()
.Select(m => m.Value.ToLowerInvariant())
.Where(v => numberTable.ContainsKey(v))
.Select(v => numberTable[v]);
long acc = 0, total = 0L;
foreach (long n in numbers)
{
if (n >= 1000)
{
total += (acc * n);
acc = 0;
}
else if (n >= 100)
{
acc *= n;
}
else acc += n;
}
return (total + acc) * (numberString.StartsWith("minus", StringComparison.InvariantCultureIgnoreCase) ? -1 : 1);
}
protected void ConvertNumTowords(object sender, EventArgs e)
{
string[] Ones = { "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Ninteen", "Twenty" };
string[] Tens = { "Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninty" };
int no = Convert.ToInt32(this.txtConvertion_Result.Text.Trim().Replace(",", ""));
string strWords = "";
string strSecondWords = "";
bool isAmountAssigned = false;
if (no > 9999999 && no < 1000000000)
{
int j = no / 10000000;
strWords = strWords + Ones[j - 1] + " Cr ";
no = no % 10000000;
isAmountAssigned = true;
strSecondWords = j + (no > 0 ? "." + (ddlLac.SelectedItem.Value == "0" ? (no.ToString().Length > 4 ? "00" : "000") + no.ToString().TrimEnd('0') : ((ddlLac.SelectedItem.Value.Length == 1 ? "0" : "") + no.ToString().TrimEnd('0'))) : "") + " Cr ";
}
if (no > 99999 && no < 10000000)
{
int j = no / 100000;
strWords = strWords + Ones[j - 1] + " Lac ";
no = no % 100000;
if (!isAmountAssigned)
{
isAmountAssigned = true;
strSecondWords = j + (no > 0 ? "." + no.ToString().TrimEnd('0') : "") + " Lac ";
}
}
if (no > 999 && no < 100000)
{
int j = no / 1000;
strWords = strWords + Ones[j - 1] + " Thousand ";
no = no % 1000;
if (!isAmountAssigned)
{
isAmountAssigned = true;
strSecondWords = j + (no > 0 ? "." + no.ToString().TrimEnd('0') : "") + " Thousand ";
}
}
if (no > 99 && no < 1000)
{
int j = no / 100;
strWords = strWords + Ones[j - 1] + " Hundred ";
no = no % 100;
if (!isAmountAssigned)
{
isAmountAssigned = true;
strSecondWords = j + (no > 0 ? "." + no.ToString().TrimEnd('0') : "") + " Hundred ";
}
}
if (no > 19 && no < 100)
{
int j = no / 10;
strWords = strWords + Tens[j - 1] + " ";
no = no % 10;
}
if (no > 0 && no < 20)
{
strWords = strWords + Ones[no - 1];
}
this.lblWords.Visible = true;
this.lblWords2.Visible = true;
this.lblWords.Text = strWords;
this.lblWords2.Text = strSecondWords;
}
VB.Net
Protected Sub ddlcrore_SelectedIndex_Changed(ByVal sender As Object, ByVal e As EventArgs) Handles ddlcrore.SelectedIndexChanged
If ddlcrore.SelectedValue <> "-1" Then
Dim crore As String = ToLong(ddlcrore.SelectedItem.Text.Trim() & " 10000000").ToString()
Dim lac As String = ToLong(ddlLac.SelectedItem.Text.Trim() & " 100000").ToString()
Dim thousand As String = ToLong(ddlthousand.SelectedItem.Text.Trim() & " 1000").ToString()
txtConvertion_Result.Text = (Convert.ToDecimal(crore) + Convert.ToDecimal(lac) + Convert.ToDecimal(thousand)).ToString("N0", System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"))
End If
End Sub
Protected Sub ddlLac_SelectedIndex_Changed(ByVal sender As Object, ByVal e As EventArgs) Handles ddlLac.SelectedIndexChanged
If ddlLac.SelectedValue <> "-1" Then
Dim crore As String = ToLong(ddlcrore.SelectedItem.Text.Trim() & " 10000000").ToString()
Dim lac As String = ToLong(ddlLac.SelectedItem.Text.Trim() & " 100000").ToString()
Dim thousand As String = ToLong(ddlthousand.SelectedItem.Text.Trim() & " 1000").ToString()
txtConvertion_Result.Text = (Convert.ToDecimal(crore) + Convert.ToDecimal(lac) + Convert.ToDecimal(thousand)).ToString("N0", System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"))
End If
End Sub
Protected Sub ddlthousand_SelectedIndex_changed(ByVal sender As Object, ByVal e As EventArgs) Handles ddlthousand.SelectedIndexChanged
If ddlthousand.SelectedValue <> "-1" Then
Dim crore As String = ToLong(ddlcrore.SelectedItem.Text.Trim() & " 10000000").ToString()
Dim lac As String = ToLong(ddlLac.SelectedItem.Text.Trim() & " 100000").ToString()
Dim thousand As String = ToLong(ddlthousand.SelectedItem.Text.Trim() & " 1000").ToString()
txtConvertion_Result.Text = (Convert.ToDecimal(crore) + Convert.ToDecimal(lac) + Convert.ToDecimal(thousand)).ToString("N0", System.Globalization.CultureInfo.CreateSpecificCulture("hi-IN"))
End If
End Sub
Private Shared numberTable As Dictionary(Of String, Long) = New Dictionary(Of String, Long) From {{"0", 0}, {"1", 1}, {"2", 2}, {"3", 3}, {"4", 4}, {"5", 5}, {"6", 6}, {"7", 7}, {"8", 8}, {"9", 9}, {"10", 10}, {"11", 11}, {"12", 12}, {"13", 13}, {"14", 14}, {"15", 15}, {"16", 16}, {"17", 17}, {"18", 18}, {"19", 19}, {"20", 20}, {"21", 21}, {"22", 22}, {"23", 23}, {"24", 24}, {"25", 25}, {"26", 26}, {"27", 27}, {"28", 28}, {"29", 29}, {"30", 30}, {"31", 31}, {"32", 32}, {"33", 33}, {"34", 34}, {"35", 35}, {"36", 36}, {"37", 37}, {"38", 38}, {"39", 39}, {"40", 40}, {"41", 41}, {"42", 42}, {"43", 43}, {"44", 44}, {"45", 45}, {"46", 46}, {"47", 47}, {"48", 48}, {"49", 49}, {"50", 50}, {"51", 51}, {"52", 52}, {"53", 53}, {"54", 54}, {"55", 55}, {"56", 56}, {"57", 57}, {"58", 58}, {"59", 59}, {"60", 60}, {"61", 61}, {"62", 62}, {"63", 63}, {"64", 64}, {"65", 65}, {"66", 66}, {"67", 67}, {"68", 68}, {"69", 69}, {"70", 70}, {"71", 71}, {"72", 72}, {"73", 73}, {"74", 74}, {"75", 75}, {"76", 76}, {"77", 77}, {"78", 78}, {"79", 79}, {"80", 80}, {"81", 81}, {"82", 82}, {"83", 83}, {"84", 84}, {"85", 85}, {"86", 86}, {"87", 87}, {"88", 88}, {"89", 89}, {"90", 90}, {"91", 91}, {"92", 92}, {"93", 93}, {"94", 94}, {"95", 95}, {"96", 96}, {"97", 97}, {"98", 98}, {"99", 99}, {"100", 100}, {"101", 101}, {"102", 102}, {"103", 103}, {"104", 104}, {"105", 105}, {"106", 106}, {"107", 107}, {"108", 108}, {"109", 109}, {"110", 110}, {"111", 111}, {"112", 112}, {"1000", 1000}, {"100000", 100000}, {"10000000", 10000000}}
Public Shared Function ToLong(ByVal numberString As String) As Long
Dim numbers = Regex.Matches(numberString, "\w+").Cast(Of Match)().[Select](Function(m) m.Value.ToLowerInvariant()).Where(Function(v) numberTable.ContainsKey(v)).[Select](Function(v) numberTable(v))
Dim acc As Long = 0, total As Long = 0L
For Each n As Long In numbers
If (n >= 1000) Then
total = (total + (acc * n))
acc = 0
ElseIf (n >= 100) Then
acc = (acc * n)
Else
acc = (acc + n)
End If
Next
Return ((total + acc) * (IIf(numberString.StartsWith("minus", StringComparison.InvariantCultureIgnoreCase), -1, 1)))
End Function
Protected Sub ConvertNumTowords(ByVal sender As Object, ByVal e As EventArgs)
Dim Ones As String() = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Ninteen", "Twenty"}
Dim Tens As String() = {"Ten", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninty"}
Dim no As Integer = Convert.ToInt32(Me.txtConvertion_Result.Text.Trim().Replace(",", ""))
Dim strWords As String = ""
Dim strSecondWords As String = ""
Dim isAmountAssigned As Boolean = False
If ((no > 9999999) AndAlso (no < 1000000000)) Then
Dim j As Integer = (no / 10000000)
strWords = (strWords & (Ones((j - 1)) & " Cr "))
no = (no Mod 10000000)
isAmountAssigned = True
strSecondWords = j & IIf((no > 0), "." & IIf(ddlLac.SelectedItem.Value = "0", IIf(no.ToString().Length > 4, "00", "000") & no.ToString().TrimEnd("0"), IIf(ddlLac.SelectedItem.Value.Length = 1, "0", "") & no.ToString().TrimEnd("0")), "") & " Cr "
End If
If ((no > 99999) AndAlso (no < 10000000)) Then
Dim j As Integer = (no / 100000)
strWords = (strWords & (Ones((j - 1)) & " Lac "))
no = (no Mod 100000)
If Not isAmountAssigned Then
isAmountAssigned = True
strSecondWords = (j & IIf(no > 0, "." & no.ToString().TrimEnd("0"), "") & " Lac ")
End If
End If
If ((no > 999) AndAlso (no < 100000)) Then
Dim j As Integer = (no / 1000)
strWords = (strWords & (Ones((j - 1)) & " Thousand "))
no = (no Mod 1000)
If Not isAmountAssigned Then
isAmountAssigned = True
strSecondWords = (j & IIf(no > 0, "." & no.ToString().TrimEnd("0"), "") & " Thousand ")
End If
End If
If ((no > 99) AndAlso (no < 1000)) Then
Dim j As Integer = (no / 100)
strWords = (strWords & (Ones((j - 1)) & " Hundred "))
no = (no Mod 100)
If Not isAmountAssigned Then
isAmountAssigned = True
strSecondWords = (j & IIf(no > 0, "." & no.ToString().TrimEnd("0"), "") & " Hundred ")
End If
End If
If ((no > 19) AndAlso (no < 100)) Then
Dim j As Integer = (no / 10)
strWords = (strWords & (Tens((j - 1)) & " "))
no = (no Mod 10)
End If
If ((no > 0) AndAlso (no < 20)) Then
strWords = (strWords & Ones((no - 1)))
End If
Me.lblWords.Visible = True
Me.lblWords2.Visible = True
Me.lblWords.Text = strWords
Me.lblWords2.Text = strSecondWords
End Sub
Screenshot
