Monday, March 2, 2009

C# Translate Numeric Values in Words upto 99lacs including decimals

Use NUM_IN_WORDS function where u want to Translate numeric values in words. Pass numeric value in function it returns string as in words. eg. NUMBER: 2134 ANSWER: Two Thousand One Hundred Thirty Four. Its limit is upto 99Lacs with decimals

public string Num_In_Words(string str_Num) {
// Function to convert numerical value in words
string One_Ch="";
string Chk_Pos="";
string temp="";
string Paise="";
string Rupees="";
string Temp1;
string Num_In_Words="";
int ZeroErr=0;
int DOT=0;
int i;
i = 1;
// temp = str_Num
Paise = "";
Temp1 = "";
for (int L = 1; (L <= str_Num.Length); L++) { Temp1 = str_Num.Substring((L - 1), 1); if ((Temp1 == ".")) { DOT = 1; } else if ((DOT != 1)) { Rupees = (Rupees + Temp1); } else { Paise = (Paise + Temp1); } } // For Rupees temp = Rupees; while ((temp.Length != 0)) { One_Ch = Rupees.Substring((i - 1), 1); // Detecting tens of the number if ((One_Ch != "0")) { switch (temp.Length) { case 7: Num_In_Words = (Num_In_Words + Conv_Word(One_Ch, 7, temp.Substring(1, 1))); Chk_Pos = One_Ch; break; case 6: if ((Chk_Pos == "1")) { Num_In_Words = (Num_In_Words + " Lakhs "); ZeroErr = 1; } else { Num_In_Words = (Num_In_Words + (Conv_Word(One_Ch, 6, "") + " Lakhs ")); ZeroErr = 1; } break; case 5: Num_In_Words = (Num_In_Words + (Conv_Word(One_Ch, 5, temp.Substring(1, 1)) + " ")); Chk_Pos = One_Ch; break; case 4: if ((Chk_Pos == "1")) { Num_In_Words = (Num_In_Words + " Thousand "); } else { Num_In_Words = (Num_In_Words + (Conv_Word(One_Ch, 4, "") + " Thousand ")); } break; case 3: Num_In_Words = (Num_In_Words + (Conv_Word(One_Ch, 3, "") + " Hundred ")); Chk_Pos = ""; break; case 2: Num_In_Words = (Num_In_Words + (Conv_Word(One_Ch, 2, temp.Substring(1, 1)) + " ")); Chk_Pos = One_Ch; break; case 1: if ((Chk_Pos != "1")) { Num_In_Words = (Num_In_Words + Conv_Word(One_Ch, 1, "")); } break; switch (temp.Length) { case 6: if ((temp.Substring(0, 1) == "0")) { Num_In_Words = (Num_In_Words + " Lakhs "); } break; case 4: if ((temp.Substring(0, 1) == "0")) { Num_In_Words = (Num_In_Words + " Thousand "); } break; } } } i = (i + 1); if (Rupees.Length > 0)
{
temp = Rupees.Substring((i - 1));//, temp.Length);
}
}
// Final Output for rupees
// Num_In_Words = (Num_In_Words );
if ((Paise != "")) {
for (int L = 1; (L <= 2); L++) { One_Ch = Paise.Substring((L - 1), 1); switch (L) { case 1: Num_In_Words = (Num_In_Words + (" and " + Conv_Word(One_Ch, 2, Paise.Substring(1, 1)))); Chk_Pos = One_Ch; break; case 2: if (((Chk_Pos != "1") && (Chk_Pos != "0"))) { Num_In_Words = (Num_In_Words + (" " + Conv_Word(One_Ch, 1,""))); } // Final Output for paise Num_In_Words = (Num_In_Words + " decimals"); break; } } } //Num_In_Words = Num_In_Words + " Only."; return Num_In_Words; } public string Conv_Word(string One_Ch, int Pos, string NextChar) { string Conv_Word = ""; // Converting numeric in words // Warning!!! Optional parameters not supported if (((Pos != 2) && ((Pos != 5) && (Pos != 7)))) { switch (One_Ch) { case "1": Conv_Word = "One"; break; case "2": Conv_Word = "Two"; break; case "3": Conv_Word = "Three"; break; case "4": Conv_Word = "Four"; break; case "5": Conv_Word = "Five"; break; case "6": Conv_Word = "Six"; break; case "7": Conv_Word = "Seven"; break; case "8": Conv_Word = "Eight"; break; case "9": Conv_Word = "Nine"; break; } } else { switch (One_Ch) { case "1": switch (NextChar) { case "1": Conv_Word = "Eleven"; break; case "2": Conv_Word = "Twelve"; break; case "3": Conv_Word = "Thirteen"; break; case "4": Conv_Word = "Fourteen"; break; case "5": Conv_Word = "Fifteen"; break; case "6": Conv_Word = "Sixteen"; break; case "7": Conv_Word = "Seventeen"; break; case "8": Conv_Word = "Eighteen"; break; case "9": Conv_Word = "Ninteen"; break; case "0": Conv_Word = "Ten"; break; } break; case "2": Conv_Word = "Twenty"; break; case "3": Conv_Word = "Thirty"; break; case "4": Conv_Word = "Fourty"; break; case "5": Conv_Word = "Fifty"; break; case "6": Conv_Word = "Sixty"; break; case "7": Conv_Word = "Seventy"; break; case "8": Conv_Word = "Eighty"; break; case "9": Conv_Word = "Ninty"; break; case "0": Conv_Word = "Zero"; break; } } return Conv_Word; }


enjoy !!
~ Upendra
Blog Flux Directory

No comments:

Post a Comment

Please post your comments on this articles so that I can provide with you information you are looking for and also let me know if you like or dont like this article. Your comments are most welcome.