Yazılım

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.

Ali UYSAL

IT alanında 16 sene önce donanım ile başlayan tecrübem, network ve sonrasında iş analizi, yazılım geliştirme ve proje yöneticiliği alanlarında devam etmiştir. Endüstriyel yazılımlar, sahadan veri toplama ve analizleri, otomatik etiketleme ve barkod sistemleri, otomatik tartım ve robotik konularında tecrübe sahibiyim. Sanayi 4.0 kapsamında imalat sanayinin dijital dönüşümünde çok fazla projenin hayata geçmesini sağladım.Open Source projelerle uzun süre ilgilendim, analiz ve implementasyonu konularında tecrübe edindim. Bunlar dışında hobi amacıyla başlasam da sonradan ürüne dönüşen, geliştirme kartları ile farklı çalışmalarım olmuştur.Raspberry Pi üzerinde yaptığım donanımsal ve yazılımsal işler ile çok farklı ürünler ortaya çıkartarak tecrübe edindim.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu