Pour vérifier si la valeur de la chaîne a une valeur numérique ou non en C #

StackOverflow https://stackoverflow.com/questions/268120

  •  06-07-2019
  •  | 
  •  

Question

Je vais avoir une chaîne comme celle-ci

string str = "dfdsfdsf8fdfdfd9dfdfd4"

Je dois vérifier si la chaîne contient un nombre en parcourant le tableau.

Était-ce utile?

La solution

Qu'en est-il d'une expression régulière:

bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");

Autres conseils

Si vous recherchez une valeur entière, vous pouvez utiliser int. TryParse :

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

Pour vérifier un nombre décimal, remplacez int.TryParse par Décimal. TryParse . Consultez cet article de blog et les commentaires " Pourquoi utiliser TryParse () en C # & ; pour plus de détails.

Si vous avez besoin de nombres décimaux, vous pouvez également utiliser cette expression régulière:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?
Microsoft.VisualBasic.Information.IsNumeric("abc"); 
quot;);

Et enfin une autre alternative (si vous n'êtes pas religieux contre VB.NET ), vous pouvez utiliser la méthode dans l'espace de noms Microsoft.VisualBasic:

<*>

Si vous envisagez de parcourir la chaîne en boucle, n’utilisez pas int.TryParse ... c’est trop lourd. Utilisez plutôt char.IsNumber ();

exemple:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
str.ToCharArray().Any(x => char.IsNumber(x));

La combinaison de parties de Kamals et de Tristars donne des réponses ...

str.Any(char.IsNumber)

qui, à mon avis, est la manière la plus succincte et la plus lisible, au lieu d’une expression régulière

Si vous êtes un junkie linq comme moi, vous le feriez de cette façon

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;

en C # 2.0, essayez ceci:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }
str.ToCharArray().Any(char.IsNumber)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top