J'ai un TextBoxD1.Text
et je veux le convertir enint
pour le stocker dans une base de données.
Comment puis-je faire ceci?
Essaye ça:
int x = Int32.Parse(TextBoxD1.Text);
ou mieux encore:
int x = 0;
Int32.TryParse(TextBoxD1.Text, out x);
De plus, puisque Int32.TryParse
renvoie un, bool
vous pouvez utiliser sa valeur de retour pour prendre des décisions sur les résultats de la tentative d'analyse:
int x = 0;
if (Int32.TryParse(TextBoxD1.Text, out x))
{
// you know that the parsing attempt
// was successful
}
Si vous êtes curieux, la différence entre Parse
et TryParse
se résume mieux comme ceci:
La méthode TryParse est similaire à la méthode Parse, sauf que la méthode TryParse ne lève pas d'exception si la conversion échoue. Il élimine le besoin d'utiliser la gestion des exceptions pour tester une exception FormatException dans le cas où s n'est pas valide et ne peut pas être analysé avec succès. - MSDN
Int64.Parse()
. Si l'entrée n'est pas int, vous obtiendrez une exécution et une trace de pile avecInt64.Parse
, ou le booléenFalse
avecInt64.TryParse()
, vous aurez donc besoin d'une instruction if, commeif (Int32.TryParse(TextBoxD1.Text, out x)) {}
.Utilisez-le si vous êtes certain que le contenu de la zone de texte est valide
int
. Une option plus sûre estCela vous fournira une valeur par défaut que vous pouvez utiliser.
Int32.TryParse
renvoie également une valeur booléenne indiquant s'il a pu analyser ou non, vous pouvez donc même l'utiliser comme condition d'uneif
instruction.la source
Il ne lancera pas si le texte n'est pas numérique.
la source
Une autre façon serait:
La différence entre les deux est que la première lèverait une exception si la valeur de votre zone de texte ne peut pas être convertie, tandis que la seconde retournerait simplement false.
la source
code
int NumericJL; bool isNum = int.TryParse (nomeeJobBand, out NumericJL); if (isNum) // Le JL retured est capable de coller à int puis aller de l'avant pour la comparaison {if (! (NumericJL> = 6)) {// Nominate} // else {}}Vous devez analyser la chaîne et vous devez également vous assurer qu'elle est vraiment au format entier.
La façon la plus simple est la suivante:
la source
Soyez prudent lorsque vous utilisez Convert.ToInt32 () sur un caractère!
Il renverra l' UTF-16 code du personnage!
Si vous accédez à la chaîne uniquement dans une certaine position à l'aide de l'
[i]
opérateur d'indexation, elle renverra unchar
et non unstring
!la source
L'instruction TryParse renvoie un booléen indiquant si l'analyse a réussi ou non. S'il réussit, la valeur analysée est stockée dans le deuxième paramètre.
Voir Int32.TryParse, méthode (String, Int32) pour des informations plus détaillées.
la source
Profitez-en...
la source
Bien qu'il existe déjà de nombreuses solutions qui décrivent
int.Parse
, il y a quelque chose d'important qui manque dans toutes les réponses. En règle générale, les représentations sous forme de chaîne des valeurs numériques diffèrent selon la culture. Les éléments des chaînes numériques tels que les symboles monétaires, les séparateurs de groupe (ou de milliers) et les séparateurs décimaux varient tous selon la culture.Si vous souhaitez créer un moyen robuste d'analyser une chaîne en un entier, il est donc important de prendre en compte les informations de culture. Si vous ne le faites pas, les paramètres de culture actuels seront utilisés. Cela pourrait donner à un utilisateur une très mauvaise surprise - ou pire encore, si vous analysez des formats de fichiers. Si vous souhaitez simplement analyser l'anglais, il est préférable de le rendre simplement explicite, en spécifiant les paramètres de culture à utiliser:
Pour plus d'informations, consultez CultureInfo, en particulier NumberFormatInfo sur MSDN.
la source
Vous pouvez écrire votre propre méthode d'extension
Et n'importe où dans le code, il suffit d'appeler
Dans ce cas concret
la source
StringExtensions
place deIntegerExtensions
, puisque ces méthodes d'extension agissent sur unstring
et non sur unint
?Comme expliqué dans la documentation TryParse , TryParse () renvoie un booléen qui indique qu'un nombre valide a été trouvé:
la source
la source
Vous pouvez utiliser soit,
ou
la source
la source
Vous pouvez convertir une chaîne en int en C # en utilisant:
Fonctions de la classe de conversion par exemple
Convert.ToInt16()
,Convert.ToInt32()
,Convert.ToInt64()
ou en utilisantParse
etTryParse
fonctions. Des exemples sont donnés ici .la source
Vous pouvez également utiliser une méthode d'extension , elle sera donc plus lisible (bien que tout le monde soit déjà habitué aux fonctions Parse régulières).
Et puis vous pouvez l'appeler de cette façon:
Si vous êtes sûr que votre chaîne est un entier, comme "50".
Si vous n'êtes pas sûr et souhaitez éviter les plantages.
Pour le rendre plus dynamique, afin que vous puissiez également l'analyser pour doubler, flotter, etc., vous pouvez créer une extension générique.
la source
La conversion de
string
laint
peut être fait pour:int
,Int32
,Int64
et d' autres types de données reflétant les types de données entières dans .NETL'exemple ci-dessous montre cette conversion:
Cet élément d'adaptateur de données show (for info) est initialisé à la valeur int. La même chose peut être faite directement comme,
Ex.
Lien pour voir cette démo .
la source
Cela ferait
Ou vous pouvez utiliser
Consultez Microsoft Developer Network pour plus d'informations
la source
Vous pouvez faire comme ci-dessous sans TryParse ou fonctions intégrées:
la source
la source
Vous pouvez convertir une chaîne en une valeur entière à l'aide de la méthode d'analyse.
Par exemple:
la source
La façon dont je le fais toujours est la suivante:
Voilà comment je le ferais.
la source
Si vous cherchez le long chemin, créez simplement votre méthode:
la source
MÉTHODE 1
MÉTHODE 2
MÉTHODE 3
la source
Ce code fonctionne pour moi dans Visual Studio 2010:
la source
Cela fonctionne pour moi:
la source
Vous pouvez essayer ce qui suit. Ça va marcher:
La valeur de chaîne dans la variable TextBoxD1.Text sera convertie en Int32 et stockée dans x.
la source
Dans C # v.7, vous pouvez utiliser un paramètre inline out, sans déclaration de variable supplémentaire:
la source
out
paramètres ne sont-ils pas découragés en C # maintenant?Cela peut vous aider; D
la source