50 votes

Comment vérifier si IsNumeric

Duplicata possible : Comment identifier si la chaîne contient un nombre?

En VB, il y a une fonction IsNumeric, y a-t-il quelque chose de similaire en c# ?

Pour contourner ce problème, je viens d'écrire le code:

     if (Int32.Parse(txtMyText.Text.Trim()) > 0)

Je me demandais juste s'il y avait une meilleure façon de le faire.

86voto

Otávio Décio Points 44200

Vous pouvez écrire une méthode d'extension :

 public static class Extension
{
    public static bool IsNumeric(this string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}

16voto

Reinaldo Points 1598

Je pense que vous avez besoin de quelque chose d'un peu plus générique. Essaye ça:

 public static System.Boolean IsNumeric (System.Object Expression)
{
    if(Expression == null || Expression is DateTime)
        return false;

    if(Expression is Int16 || Expression is Int32 || Expression is Int64 || Expression is Decimal || Expression is Single || Expression is Double || Expression is Boolean)
        return true;

    try 
    {
        if(Expression is string)
            Double.Parse(Expression as string);
        else
            Double.Parse(Expression.ToString());
            return true;
        } catch {} // just dismiss errors but return false
        return false;
    }
}

J'espère que ça aide!

8voto

Corey Points 607

Il existe la méthode TryParse, qui renvoie un bool indiquant si la conversion a réussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X