Oggi ho creato una semplice funzione che trasforma un numero in lettere, per esempio trasforma il numero 1256 in milleduecentocinquantasei


public static string convertNumberToReadableString(long num)
        {
            string result = "";
            long mod = 0;
            long i = 0;
            string[] unita = { "zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove", "dieci", "undici", "dodici", "tredici", "quattordici", "quindici", "sedici", "diciassette", "diciotto", "diciannove" };
            string[] decine = { "", "dieci", "venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottonta", "novanta" };
            if (num>0 && num < 20)
            {

                result = unita[num];
            }
            else
            {
                if (num < 100)
                {
                    mod = num % 10;
                    i = num / 10;
                    switch (mod)
                    {
                        case 0:
                            result = decine[i];
                            break;
                        case 1:
                            result = decine[i].Substring(0, decine[i].Length - 1) + unita[mod];
                            break;
                        case 8:
                            result = decine[i].Substring(0, decine[i].Length - 1) + unita[mod];
                            break;
                        default:
                            result = decine[i] + unita[mod];
                            break;
                    }
                }
                else
                {
                    if (num < 1000)
                    {
                        mod = num % 100;
                        i = (num - mod) / 100;
                        switch (i)
                        {
                            case 1:
                                result = "cento";
                                break;
                            default:
                                result = unita[i] + "cento";
                                break;
                        }
                        result = result + convertNumberToReadableString(mod);
                    }
                    else
                    {
                        if (num < 10000)
                        {
                            mod = num % 1000;
                            i = (num - mod) / 1000;
                            switch (i)
                            {
                                case 1:
                                    result = "mille";
                                    break;
                                default:
                                    result = unita[i] + "mila";
                                    break;
                            }
                            result = result + convertNumberToReadableString(mod);
                        }
                        else
                        {
                            if (num < 1000000)
                            {
                                mod = num % 1000;
                                i = (num - mod) / 1000;
                                switch ((num - mod) / 1000)
                                {
                                    default:
                                        if (i < 20)
                                        {
                                            result = unita[i] + "mila";
                                        }
                                        else
                                        {
                                            result = convertNumberToReadableString(i) + "mila";
                                        }
                                        break;
                                }
                                result = result + convertNumberToReadableString(mod);
                            }
                            else
                            {
                                if (num < 1000000000)
                                {
                                    mod = num % 1000000;
                                    i = (num - mod) / 1000000;
                                    switch (i)
                                    {
                                        case 1:
                                            result = "unmilione";
                                            break;

                                        default:
                                            result = convertNumberToReadableString(i) + "milioni";

                                            break;
                                    }
                                    result = result + convertNumberToReadableString(mod);
                                }
                                else
                                {
                                    if (num < 1000000000000)
                                    {
                                        mod = num % 1000000000;
                                        i = (num - mod) / 1000000000;
                                        switch (i)
                                        {
                                            case 1:
                                                result = "unmiliardo";
                                                break;

                                            default:
                                                result = convertNumberToReadableString(i) + "miliardi";

                                                break;
                                        }
                                        result = result + convertNumberToReadableString(mod);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return result;

        }
La funzione per mette per esempio di generare una stringa con il formato utilizzato per esempio negli assegni:
decimal num = Convert.ToDecimal("12345678,90");
long parteIntera = (long)Decimal.Truncate(num);
int parteDecimale =(int)(Math.Round(num - parteIntera,2)*100);
string result = string.Format("{0}/{1}", convertNumberToReadableString(parteIntera), parteDecimale);
//dodicimilionitrecentoquarantacinquemilaseicentosettantotto/90
Happy Coding;


Autore:


blog comments powered by Disqus

 

Calendar

<<  August 2017  >>
MonTueWedThuFriSatSun
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

View posts in large calendar