Je veux juste savoir si une variable String contient un parsable valeur entière positive. Je ne veux PAS analyser la valeur pour le moment.
Actuellement je fais:
int parsedId;
if (
(String.IsNullOrEmpty(myStringVariable) ||
(!uint.TryParse(myStringVariable, out parsedId))
)
{//..show error message}
C'est moche - Comment être plus concis?
Remarque: Je connais les méthodes d'extension, mais je me demande s'il y a quelque chose de intégré.
La réponse semble être juste non.
Bien qu'il existe de nombreuses autres bonnes réponses, elles cachent simplement la laideur (que je n'ai pas demandée) ou introduisent de nouveaux problèmes (cas Edge).
Vous pouvez utiliser char.IsDigit :
bool isIntString = "your string".All(char.IsDigit)
Renvoie true
si la chaîne est un nombre
bool containsInt = "your string".Any(char.IsDigit)
Renvoie true
si la chaîne contient un chiffre
En supposant que vous souhaitez vérifier que tous les caractères de la chaîne sont des chiffres, vous pouvez utiliser la méthode d'extension Enumerable.All avec la méthode Char.IsDigit comme suit:
bool allCharactersInStringAreDigits = myStringVariable.All(char.IsDigit);
Peut-être que cela peut aider
string input = "hello123world";
bool isDigitPresent = input.Any(c => char.IsDigit(c));
réponse de msdn .
Vous pouvez vérifier si la chaîne contient uniquement des nombres:
Regex.IsMatch(myStringVariable, @"^-?\d+$")
Mais le nombre peut être supérieur à Int32.MaxValue
ou moins de Int32.MinValue
- vous devez garder cela à l'esprit.
Une autre option - créer une méthode d'extension et y déplacer du code laid:
public static bool IsInteger(this string s)
{
if (String.IsNullOrEmpty(s))
return false;
int i;
return Int32.TryParse(s, out i);
}
Cela rendra votre code plus propre:
if (myStringVariable.IsInteger())
// ...
Ce travail pour moi.
("your string goes here").All(char.IsDigit)
Désolé, vous n'avez pas bien compris votre question. Alors quelque chose comme ça?
str.ToCharArray().Any(char.IsDigit);
Ou la valeur doit-elle être un entier complètement, sans aucune chaîne supplémentaire?
if(str.ToCharArray().All(char.IsDigit(c));