Share This Post

C# / UWP

C# UWP ile Rakamları Nasıl Yazıya Çevirebiliriz?

Merhabalar;
Genellikle fatura altlarında gördüğümüz fatura tutarının yazı ile yazılmış şekillerini C# UWP kullanarak nasıl yapabiliriz, hızlıca anlatmaya çalışacağım.

Öncelikle Visual Studio ile bir UWP projesi oluşturarak başlıyoruz, oluşturduğumuz projede MainPage.xaml tasarımında sadece formda gösterebilmek amacıyla Grid tagları arasına Number ve Read isimlerinde iki adet TextBlock oluşturuyorum.

<TextBlock HorizontalAlignment="Left" Margin="530,104,0,0" Name="Number" Text="0" VerticalAlignment="Top" Height="44" Width="510"/>
        <TextBlock HorizontalAlignment="Left" Margin="530,178,0,0" Name="Read" Text="sıfır" TextWrapping="Wrap" VerticalAlignment="Top" Height="136" Width="510"/>

Daha sonra MainPage.xaml.cs içerisine aşağıdaki kodları ekliyoruz, kodların detaylarını aşağıda belirteceğim.

Number.Text = "8921954,10";
            string sTutar = Number.Text.Replace('.', ',');      
            string lira = sTutar.Substring(0, sTutar.IndexOf(',')); //tam 
            string kurus = sTutar.Substring(sTutar.IndexOf(',') + 1, 2);
            string yazi = "";

            string[] birler = { "", "BİR", "İKİ", "Üç", "DÖRT", "BEŞ", "ALTI", "YEDİ", "SEKİZ", "DOKUZ" };
            string[] onlar = { "", "ON", "YİRMİ", "OTUZ", "KIRK", "ELLİ", "ALTMIŞ", "YETMİŞ", "SEKSEN", "DOKSAN" };
            string[] binler = { "KATRİLYON", "TRİLYON", "MİLYAR", "MİLYON", "BİN", "" }; 

            int grupSayisi = 6; 

            lira = lira.PadLeft(grupSayisi * 3, '0');           

            string grupDegeri;

            for (int i = 0; i < grupSayisi * 3; i += 3) 
            {
                grupDegeri = "";

                if (lira.Substring(i, 1) != "0")
                    grupDegeri += birler[Convert.ToInt32(lira.Substring(i, 1))] + "YÜZ";              

                if (grupDegeri == "BİRYÜZ") 
                    grupDegeri = "YÜZ";

                grupDegeri += onlar[Convert.ToInt32(lira.Substring(i + 1, 1))]; 

                grupDegeri += birler[Convert.ToInt32(lira.Substring(i + 2, 1))];       

                if (grupDegeri != "") //binler
                    grupDegeri += binler[i / 3];

                if (grupDegeri == "BİRBİN")
                    grupDegeri = "BİN";

                yazi += grupDegeri;
            }

            if (yazi != "")
                yazi += " TL ";

            int yaziUzunlugu = yazi.Length;

            if (kurus.Substring(0, 1) != "0") //kuruş onlar
                yazi += onlar[Convert.ToInt32(kurus.Substring(0, 1))];

            if (kurus.Substring(1, 1) != "0") //kuruş birler
                yazi += birler[Convert.ToInt32(kurus.Substring(1, 1))];
                Read.Text = yazi += birler[Convert.ToInt32(kurus.Substring(1, 1))];

            if (yazi.Length > yaziUzunlugu)
                Read.Text = yazi += " Kr.";
            else
                yazi += "SIFIR Kr.";

        }

Aşağıdaki kodda Number isimli Textblock’da bir numara set ediyoruz, burada set ettiğimiz değeri harflere dökeceğiz.

Daha sonra bu sayı içerisinde ki . ve , ile Tutarı replace ederek birlik, onluk ve binlikleri alıyoruz.

Number.Text = "8921954,10";
            string sTutar = Number.Text.Replace('.', ',');      
            string lira = sTutar.Substring(0, sTutar.IndexOf(',')); //tam 
            string kurus = sTutar.Substring(sTutar.IndexOf(',') + 1, 2);
            string yazi = "";

Kullanacağımız değişkenleri ayarlıyoruz,

string[] birler = { "", "BİR", "İKİ", "Üç", "DÖRT", "BEŞ", "ALTI", "YEDİ", "SEKİZ", "DOKUZ" };
            string[] onlar = { "", "ON", "YİRMİ", "OTUZ", "KIRK", "ELLİ", "ALTMIŞ", "YETMİŞ", "SEKSEN", "DOKSAN" };
            string[] binler = { "KATRİLYON", "TRİLYON", "MİLYAR", "MİLYON", "BİN", "" }; 

ve bir döngü içerisinde grup oluşturarak grup değerlerini giriyor, daha sonra ondalık (kuruş) ve TL değerlerini oluşturarak Read TextBlock içerisine istediğimiz format ile yazdırıyoruz.

 for (int i = 0; i < grupSayisi * 3; i += 3) 
            {
                grupDegeri = "";

                if (lira.Substring(i, 1) != "0")
                    grupDegeri += birler[Convert.ToInt32(lira.Substring(i, 1))] + "YÜZ";              

                if (grupDegeri == "BİRYÜZ") 
                    grupDegeri = "YÜZ";

                grupDegeri += onlar[Convert.ToInt32(lira.Substring(i + 1, 1))]; 

                grupDegeri += birler[Convert.ToInt32(lira.Substring(i + 2, 1))];       

                if (grupDegeri != "") //binler
                    grupDegeri += binler[i / 3];

                if (grupDegeri == "BİRBİN")
                    grupDegeri = "BİN";

                yazi += grupDegeri;
            }

            if (yazi != "")
                yazi += " TL ";

            int yaziUzunlugu = yazi.Length;

            if (kurus.Substring(0, 1) != "0") //kuruş onlar
                yazi += onlar[Convert.ToInt32(kurus.Substring(0, 1))];

            if (kurus.Substring(1, 1) != "0") //kuruş birler
                yazi += birler[Convert.ToInt32(kurus.Substring(1, 1))];
                Read.Text = yazi += birler[Convert.ToInt32(kurus.Substring(1, 1))];

            if (yazi.Length > yaziUzunlugu)
                Read.Text = yazi += " Kr.";
            else
                yazi += "SIFIR Kr.";

        }

Uygulamamızı çalıştırdığımız da sonuç aşağıdaki gibi olacaktır.

Örnek Proje kodlarını Github adresimden indirebilirsiniz.

Share This Post

Yazılım felan filan...

Leave a Reply