Pour vérifier si la valeur de la chaîne a une valeur numérique ou non en C #
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.
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)