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 aşırı yüklenmiş fonksiyon örneğini kullanarak, bir kelime katarının (string) veya bir karakterin (char) sayısal bir değer olup olmadığını öğrenebilirsiniz.

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;
}

Şu ana kadar 7 yorum yapılmış

  1. Mustafa BAL on Haziran 8, 2007

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

  2. Erkan on Haziran 8, 2007

    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 Haziran 8, 2007

    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 Temmuz 27, 2007

    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 Temmuz 27, 2007

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

  6. Salih on Eylül 6, 2007

    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 Mayıs 4, 2008

    Teşekkürler Salih…

Leave a reply