C# Sayı mı? Kontrolü (Function IsNumeric)

C# ile programlama yapıyorsanız kelime katarlarının (string) sayısal bir değer olup olmadığını kontrol etmek isteyebilirsiniz. Aşağıdaki örnekleri kullanarak, bir kelime katarının (string) veya bir karakterin (char) sayısal bir değer olup olmadığını öğrenebilirsiniz.

Örnek 1:

int i;
if (int.TryParse(”12″, out i))
{
//kelime katarı integer değer ve çıktı i değişkenine aktarıldı
}
else
{
//kelime katarı integer değer değil
}

Örnek 2:

public static bool IsNumeric(char c)
{
if (c > 57 || c < 48)
return false;
return true;
}

public static bool IsNumeric(string s)
{
char nns = System.Globalization.CultureInfo
.CurrentCulture.NumberFormat.NegativeSign[0];
char dcs = System.Globalization.CultureInfo
.CurrentCulture.NumberFormat.NumberDecimalSeparator[0];

int nnsi = s.IndexOf(nns);
if (nnsi > 0)
return false;
if(nnsi == 0)
s = s.Remove(nnsi, 1);
char[] c = s.ToCharArray();
if (c[0] == dcs || c[c.Length-1] == dcs)
return false;

int dcsc = 0;
for (int i = 0; i < c.Length; i++)
{
if (c[i] > 57 || c[i] < 48)
{
if (c[i] != dcs)
return false;
else
dcsc++;
}
if (dcsc > 1)
return false;
}
return true;
}

8 comments so far

  1. Mustafa BAL on

    Bu foksiyonlar yalnızca tamsayılarda işe yarar..

  2. Erkan on

    Mustafa bey uyarınız için teşekkür ederim. Evet yukraıdaki fonksiyon sadece tam sayıları tespit edebilir. Ufak bir eklenti ile ondalıklı sayıları da tespit edebilecek hale getirebiliriz.

  3. Erkan on

    Yukarıdaki fonksiyon ondalıklı ve negatif sayıları (”1″, “-1″, “-1,0″, “1,0″ vb…) tespit edebilecek şekilde yeniden düzenlenmiştir.

  4. Mert on

    private bool IsNumeric(object pobjIn)
    {
    bool isNumeric;
    double dblResult;
    isNumeric = Double.TryParse(Convert.ToStringpobjIn),
    System.Globalization.NumberStyles.Any,
    System.Globalization.NumberFormatInfo.InvariantInfo,
    out dblResult);
    return isNumeric;
    }

    sanırım biraz daha kısa?

  5. Mert on

    bu arada özür dilerim sanırım tek satıra yazınca metni biraz tasarım bozuldu..

  6. Salih on

    Char.IsDigit(Char c) diye hali hazırda bir fonksiyon var çok daha kolay bir foreachle işi bitirebiliyorsunuz.
    Ör
    string a = “2316811616351″;
    string b = “s351kdf24sdsd”;
    foreach(Char ch in a)
    Char.IdDigit(ch); //Return Value(True or False)
    foreach(Char ch in b)
    Char.IdDigit(ch); //Return Value(True or False)

  7. WebTasarım on

    Teşekkürler Salih…

  8. iumuhendis on

    IsNumeric() VB te kullanılan bir fonksiyondur ve C# ta ise Information.IsNumeric() şeklindedir. kullanım için yapılması gereken bir kaç işlemin anlatımı aşağıdaki adreste mevcuttur.

    http://iumuhendis.blogspot.com/2007/10/c-ta-isnumeric-fonksiyonunu-nasl.html


Leave a reply