İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# String Sayısal Değer Kontrolü

C# String Sayısal Değer Kontrolü
+ - 4

C# String Sayısal Değer Kontrolü, dersimiz ile c sharp eğitim setime devam ediyorum. Bu dersimide string türünde olan bir değerin sayı olup olmadığını kontrol edeceğiz. Elbette bu dersi de githup projeme ekleyeceğim.

 

C# String Sayısal Değer Kontrolü

C# Sayı mı? Kontrolü ‘nü nasıl yapacağımızı görelim. Bunun birden fazla yöntemi var elbet. Aklıma gelen ve bulduğum tüm yöntemleri bu dersimde göstereceğim.

Formumuza bir button, iki label ve bir textbox ekledikten sonra aşağıdaki kodlarımızı yazıyoruz. Ekran görüntüsü aşağıdaki gibidir.

C# String Sayısal Değer Kontrolü

TextBox’a yazdığımız değerin sayı olup olmadığını kontrol edeceğiz ve 3 nokta olan labele yazacağız.

 

Yöntem  1 – ForEach Kullanarak Yapmak

        bool SayiMi(string text)
        {
            foreach (char chr in text)
            {
                if (!Char.IsNumber(chr)) return false;
            }
            return true;
        }

Bu metodumuz aldığı parametredeki karakterleri tek tek kontrol eder. Eğer içerisinde bir tane bile sayı olmayan karakter varsa döngü kırılır ve sonuç false döner. Yani sayı değilse false döner. Şimdi nasıl kullanacağımza bakalım.

        private void btn_kontrol_et_Click(object sender, EventArgs e)
        {
            if (SayiMi(txt_Deger.Text) == true)
            {
                lbl_durum.Text = "Sayıdır.";
            }
            else
            {
                lbl_durum.Text = "Sayı Değildir.";
            }
        }

Butonun Click eventi içerisinde kontrolümü yapıyoruz.

 

Yöntem 2 – Extension  Class Kullanarak Yapmak 

Bu yöntemde formumuzun class seviyesine bir class daha ekleyeceğiz. Class seviyesi ne diye soracak olursanız da, eventlerin tanımlandığı alanın dışında yani en dış alanda. Aşağıdaki görsel ile daha iyi anlayacağınızı umuyorum.

c# string sayı kontrolü

Öncelikle class’ımızı ekliyoruz. Bu kullanım bize güzel bir avantaj sağlayacak. Kodları gördüğünüzde 1. yöntem ile karşılaştırabilir ve istediğinizi seçebilirsiniz.

    public static class ExtensionManager
    {
        public static bool SayiMi(this string text)
        {
            foreach (char chr in text)
            {
                if (!Char.IsNumber(chr)) return false;
            }
            return true;
        }
    }

2. yöntem kodlarımızı bu şekildeydi. Şimdi nasıl kullandığımızı görelim. Formuma bir buton daha ekledim ve kontrol et 2 adını verdim.

        private void btn_kontrol_et_2_Click(object sender, EventArgs e)
        {
            if (txt_Deger.Text.SayiMi())
                lbl_durum.Text = "Sayıdır.";
            else
                lbl_durum.Text = "Sayı Değildir.";
        }

NOT: If şartından sonra yada else den sonra tek bir satır olacaksa süslü parantezleri yazmanıza gerek yoktur.

Yukarıdaki fonksiyonun daha kısa hali de şöyledir.

public static class ExtensionManager
{
    public static bool SayiMi(this string value)
    {
        double oReturn = 0;
        return double.TryParse(value, out oReturn);
    }
}

 

Yöntem 3 – REGEX Kullanarak Yapmak

Bu yöntemde RegularExpressions namespace’ini kullanarak yapacağız. Öncelikle NameSpace’i import edeceğiz.

using System.Text.RegularExpressions;

Sonrasında metodumuzu yazıyoruz.

        public Boolean SayiMi_3(String strVeri)
        {
            if (String.IsNullOrEmpty(strVeri) == true)
            {
                return false;
            }
            else
            {
                Regex desen = new Regex("^[0-9]*$");
                return desen.IsMatch(strVeri);
            }
        }

Şimdi bu kodlarımızı nasıl kullanacağımızı görelim.

        private void btn_kontrol_et_3_Click(object sender, EventArgs e)
        {
            if (SayiMi_3(txt_Deger.Text))
                lbl_durum.Text = "Sayıdır.";
            else
                lbl_durum.Text = "Sayı Değildir.";
        }

Kullanım şekilleri genel olarak bu şekilde oluyor.

 

Yöntem 4 – char.IsDigit Metodu Kullanarak Yapmak

Bu yöntemde de IsDigit metodunu kullanarak kontrolümüzü gerçekleştiriyoruz.

        static bool sayiMi_4(string a)
        {
            bool sonuc = true;
            for (int i = 0; i < a.Length; i++)
                if (!char.IsDigit(a[i]))
                    sonuc = false;      //Eğer karakter sayı değilse false döner
            return sonuc;
        }

Kullanım şeklide böyledir.

        private void btn_kontrol_et_4_Click(object sender, EventArgs e)
        {
            if (sayiMi_4(txt_Deger.Text))
                lbl_durum.Text = "Sayıdır.";
            else
                lbl_durum.Text = "Sayı Değildir.";
        }

 

Yöntem 5  – TRY Catch Kullanarak Yapmak

Bu da sonuncu yöntemimizdir. Bunu da verdikten sonra dersimizi bitirelim.

Bu yöntemde de try cacth bloğu kullanarak yapacağız. Buradaki dersimde ayrıntılı olarak anlatmıştım. Şimdi kodlarımızı görelim.

        static bool sayiMi_5(string deger)
        {
            try
            {
                int.Parse(deger);
                return true;  
            }
            catch (Exception)
            {
                return false; 
            }
        }

Nasıl kullanacağımızı da görelim.

        private void btn_kontrol_et_5_Click(object sender, EventArgs e)
        {
            if (sayiMi_5(txt_Deger.Text))
                lbl_durum.Text = "Sayıdır.";
            else
                lbl_durum.Text = "Sayı Değildir.";
        }

 

Dediğimiz gibi kullanım şekilleri dört yöntemde de aynı. Sadece bir tanesinde farklıdır. Şimdi birde kullanım şeklinde farklılığa bakalım. Burada aslında tek satırlık if kullanımı da yapabiliriz.

Onu da hemen görelim.

 lbl_durum.Text = sayiMi_5(txt_Deger.Text) ? "Sayıdır." : "Sayı Değildir.";

Basit bir işlem olsa da 5 farklı yok gördük arkadaşlar. Bunlardan istediğiniz herhangi birisini kullanabilirsiniz.

C# en sevdiğim yanlarından birisi de bu aslında. Bir işlemin birden fazla yapılış şekli var. Ne kadar açık fikirli olur ve geniş düşünürseniz daha farklı yollar bulabilirsiniz. Aslında bir yöntem daha var ama onu vermesek de olur. Zaten 5 farklı yöntem vermiş olduk.

 


C# String Sayısal Değer Kontrolü, dersimizde bu kadar dostlar. Diğer derslerimizde görüşmek üzere.

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Ayrıca kısa süre önce tüm YENİ derslerimi tek bir proje içinde yapıp github’a yükleyeceğim demiştim. Bu dersimde o projenin içerisinde bir klasör olarak yerini almıştır. Buraya tıklayarak projeye ulaşabilirsiniz.

Sağlıcakla ve takipte kalın ;)

Bol kodlu günler..

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (4)

  1. Çok faydalandım gerçekten teşekkürler. Aynı işlemin tek bir yolunu değilde bir çok yolunu vermeniz gerçekten süper olmuş. Çok teşekkürler.

  2. 4 sene önce

    Regex Yöntemi Yanlış ^[0-9]*$ yerine ^[0-9]+$ olmalı. Elinize Sağlık.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.