Monday, April 29, 2013

Convert Numbers to Arabic Text - C# (.Net)

Convert Numbers to Arabic Text - C# (.Net)

كود تحويل الأرقام الى نصوص
بلغة C# (.Net)

Based on code on Page (http://layan.us/go/num2text/)

       private string arabicNumber(double num)
        {
            string[] aname = { "واحد", "اثنان", "ثلاثة", "اربعة", "خمسة", "ستة", "سبعة", "ثمانية", "تسعة", "عشرة", "أحد عشر", "اثنا عشر" };
            string[] aname10 = { "عشر", "عشرون", "ثلاثون", "اربعون", "خمسون", "ستون", "سبعون", "ثمانون", "تسعون" };
            string[] aname100 = { "مئة", "مئتان", "ثلثمائة", "اربعمائة", "خمسمائة", "ستمائة", "سبعمائة", "ثمانمائة", "تسعمائة" };
            string[] aname1000 = { "الف", "الفان" };


            int num4 = Convert.ToInt32(Math.Floor((num) / 1000));
            int num3 = Convert.ToInt32(Math.Floor((num - 1000 * num4) / 100));
            int num2 = Convert.ToInt32(Math.Floor((num - 100 * num3) / 10));
            int num1 = Convert.ToInt32(num - 10 * num2);

            if (num4 == 0 && num > 999)
                return aname1000[num4 - 1];
            if (num4 > 2 && num4 < 11)
                return aname[num4 - 1] + " و " + arabicNumber(num - 1000 * num4);
            if (num4 > 2 && num4 > 10)
                return arabicNumber(num4 - 1) + " و " + arabicNumber(num - 1000 * num4);
            if (num4 < 3 && num > 1000)
                return aname1000[num4 - 1] + "و" + arabicNumber(num - 1000 * num4);
            if (num3 == 0 && num > 99)
                return aname100[num3 - 1];
            if (num3 != 0 && num > 100)
                return aname100[num3 - 1] + " و " + arabicNumber(num - 100 * num3);
            if (num > 12 && num < 20)
                return aname[num1 - 1] + aname10[num2 - 1];
            if (num > 20 && num % 10 != 0)
                return aname[num1 - 1] + " و " + aname10[num2 - 1];
            if (num < 13)
                return aname[Convert.ToInt32(num) - 1];
            if (num > 19 && num % 10 == 0)
                return aname10[num2 - 1];
            return num.ToString();
        }

No comments: