vérifier si une chaîne contient une valeur numérique
Je suis en train de vérifier si une chaîne contient une valeur numérique, si elle ne marche pas, retour à l'étiquette si c'est le cas alors je voudrais afficher la fenêtre principale. Comment cela peut-il être fait?
If (mystring = a numeric value)
//do this:
var newWindow = new MainWindow();
newWindow.Show();
If (mystring = non numeric)
//display mystring in a label
label1.Text = mystring;
else return error to message box
ne non numériques ne veux pas de numéros, ou tout simplement "pas tous les nombres"?
OriginalL'auteur Kirsty White | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
Ou, si c'est un nombre décimal:
Quelques exemples, d'ailleurs, peut être trouvé ici.
Un couple de plus j'ai testé:
Il est intéressant de côté,
Double.TryParse
peut gérer des virgules dans un certain nombre maisInt32.TryParse
ne peut pas.Ne savais pas que sur les virgules. Semble comme un étrange choix de conception depuis un 000 du séparateur ils sont tout aussi valides ou non valides en virgule flottante et les nombres entiers. Si quoi que ce soit, il serait plus judicieux de ne les autoriser que des nombres entiers, puisqu'il y a une culture spécifique de l'ambiguïté avec FP numéros! Vraiment étrange.
Oui, il est bizarre. J'ai été également surpris, quand j'ai continué à aller, que négatif des taux de change échoue également. Pourquoi ils acceptent une méthode et non pas le prochain est...bizarre.
si vous n'en avez que si c'est un nombre,
double.TryParse
comme un entier est aussi valable double. Si vous avez besoin que le nombre aussi être un nombre entier, puis utiliserint.TryParse
OriginalL'auteur Brad Christie
utilisation TryParse.
Cela fonctionnera pour les chaînes de traduire directement à un certain nombre. Si vous avez besoin de vous soucier de choses comme $ et , aussi, vous aurez besoin de faire un peu plus de travail pour le nettoyer en premier.
OriginalL'auteur Jamie Treworgy
OriginalL'auteur gdoron
Vous pourriez simplement référence à Microsoft.VisualBasic.dll, puis effectuez les opérations suivantes:
Le VB on effectue en réalité mieux, comme s'il ne lance pas d'exception pour chaque conversion a échoué.
Voir: Explorer IsNumeric pour C#
Oui, je suis sûr que c'était. C'est une solution intéressante si et c'est pourquoi j'ai pensé que je devais le partager (comme un VB gars moi-même, je l'utilise tout le temps).
Honnêtement, je n'avais jamais donné une pensée avant. Je n'aurais probablement être hésitante à le faire à quelque chose de plus qu'un one-off juste parce que c'est une autre dépendance, mais c'est un outil dans votre boîte à outils pour être sûr.
Je n'aurais pas de référence
VB
pour vérifier si une chaîne est numérique ou pas. il existe de nombreuses autres façonsX.tryParse, Regex, LINQ, foreach
certains sont mieux que les autres, ** mais il n'y a juste pas besoin d'utiliser le C# petit frère - VB.** pour cette tâche(ou devrais-je dire pour les tâches.)C'est tout simplement une solution de rechange. Tout se résume à la préférence.
OriginalL'auteur Code Maverick
Vous pouvez utiliser un booléen pour juger si la chaîne contient des caractères numériques.
OriginalL'auteur
Essaie de prendre de la légende de l'Étiquette dans une chaîne et
utilisation
Int.TryParse()
méthode pour décider si le texte est entier ou chaîne de caractères. la méthode renvoie true si oui , sinon elle retourne false. Code :où Num contiendra votre valeur entière si la conversion est un succès
OriginalL'auteur CyprUS
Un bon exemple de la méthode qui va le faire peut être trouvé à: http://msdn.microsoft.com/en-us/library/f02979c7.aspx
Il y a même un peu de code à faire quelque chose de presque exactement ce que vous voulez. Vous pouvez utiliser un Int32.TryParse(string) si vous vous attendez à des valeurs entières. Si vous prévoyez double, Double.TryParse(chaîne de caractères).
OriginalL'auteur urbadave