Comment convertir une chaîne en nombre entier en C#?Comment convertir une chaîne en entier en C#
Répondre
int a = int.Parse(myString);
ou mieux encore, regardez dans int.TryParse(string)
int myInt = System.Convert.ToInt32(myString);
Comme plusieurs autres l'ont mentionné, vous pouvez également utiliser int.Parse()
et int.TryParse()
.
Si vous êtes certain que le string
aura toujours un int
:
int myInt = int.Parse(myString);
Si vous souhaitez vérifier si string
est vraiment un int
premier:
int myInt;
bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second value
if (isValid)
{
int plusOne = myInt + 1;
}
Si vous êtes Assurez-vous que vous avez un "vrai" numéro dans votre chaîne, ou vous êtes à l'aise avec toute exception qui pourrait survenir, utilisez ceci.
string s="4";
int a=int.Parse(s);
Pour un peu plus de contrôle sur le processus, utilisez
string s="maybe 4";
int a;
if (int.TryParse(s, out a)) {
// it's int;
}
else {
// it's no int, and there's no exception;
}
faire quelque chose comme:
var result = Int32.Parse(str);
Si vous êtes sûr que ça va bien analyser, utilisez
int.Parse(string)
Si ce n'est pas le cas, utilisez
int i;
bool success = int.TryParse(string, out i);
Attention! Dans le cas ci-dessous, i
sera égal à 0, et non 10 après le TryParse
.
int i = 10;
bool failure = int.TryParse("asdf", out i);
C'est parce que TryParse
utilise un sur paramètre, pas un paramètre ref.
@sslaitha, merci. Si cela répond suffisamment à votre question, n'oubliez pas de la marquer comme la réponse. – Brandon
Notez simplement que si vous avez int i = 10; et utilisez int.TryParse ("asdf", out i); que je vais contenir 0 pas 10 !!! C'est parce que TryParse utilise une variable out, pas une ref. – CaffGeek
La "mise en garde" s'applique au troisième exemple - pas au second. M'a étonné un peu car je m'attendais à ce que le "ceci" se réfère à l'exemple ci-dessus, pas ci-dessous. –
int i;
string whatever;
//Best since no exception raised
int.TryParse(whatever, out i);
//Better use try catch on this one
i = Convert.ToInt32(whatever);
string varString = "15";
int i = int.Parse(varString);
ou
int varI;
string varString = "15";
int.TryParse(varString, out varI);
int.TryParse
est plus sûr car si vous mettez quelque chose d'autre dans varString
(par exemple "fsfdsfs") vous obtiendrez une exception. En utilisant int.TryParse
lorsque la chaîne ne peut pas être convertie en int, elle renvoie 0
.
int i;
string result = Something;
i = Convert.ToInt32(result);
class MyMath
{
public dynamic Sum(dynamic x, dynamic y)
{
return (x+y);
}
}
class Demo
{
static void Main(string[] args)
{
MyMath d = new MyMath();
Console.WriteLine(d.Sum(23.2, 32.2));
}
}
envisagez de fournir une explication à votre code – arghtype
4 techniques are benchmarked here.
La façon la plus rapide est avéré être les suivantes:
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
"s" est votre chaîne que vous voulez convertir en un entier. Ce code suppose que vous n'aurez aucune exception pendant la conversion. Donc, si vous savez que vos données de chaîne seront toujours une sorte de valeur int, le code ci-dessus est le meilleur moyen d'aller à la vitesse pure.
À la fin, "y" aura votre valeur int.
Vous pouvez utiliser,
int i = Convert.ToInt32(myString);
ou
int i =int.Parse(myString);
résultat bool = Int32.TryParse (someString, sur someNumeric)
Cette méthode va essayer de convertir votre string someString
en int someNumeric
et vous renvoyant boolean result
. true
si la conversion a abouti et false
si la conversion a échoué. Notez que cette méthode ne lancera pas d'exception si la conversion a échoué comme l'a fait la méthode Int32.Parse
et qu'elle renvoie zéro pour someNumeric
.
Pour plus d'informations, vous pouvez lire ici:
https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
How to convert string to integer in C#
Pourquoi la balise VB.NET? –
duplicata possible de http://stackoverflow.com/questions/1019793/how-can-i-convert-string-to-int –