Come si converte una stringa in un numero intero in C #?
Come si converte una stringa in un numero intero in C #?
Risposte:
Se sei sicuro che analizzerà correttamente, usa
int.Parse(string)
Se non lo sei, usa
int i;
bool success = int.TryParse(string, out i);
Attenzione! Nel caso seguente, isarà uguale a 0, non a 10 dopo TryParse.
int i = 10;
bool failure = int.TryParse("asdf", out i);
Questo perché TryParseutilizza un parametro out , non un parametro ref .
int myInt = System.Convert.ToInt32(myString);
Come molti altri hanno già detto, puoi anche usare int.Parse()e int.TryParse().
Se sei certo che stringsarà sempre un int:
int myInt = int.Parse(myString);
Se desideri verificare se stringè davvero un intprimo:
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;
}
string varString = "15";
int i = int.Parse(varString);
o
int varI;
string varString = "15";
int.TryParse(varString, out varI);
int.TryParseè più sicuro poiché se si inserisce qualcos'altro in varString(ad esempio "fsfdsfs") si otterrebbe un'eccezione. Usando int.TryParsequando la stringa non può essere convertita in int, restituirà 0.
Se sei sicuro di avere un numero "reale" nella tua stringa, o sei a tuo agio con qualsiasi eccezione che potrebbe sorgere, usa questo.
string s="4";
int a=int.Parse(s);
Per un maggiore controllo sul processo, usa
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;
}
Fai qualcosa come:
var result = Int32.Parse(str);
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);
Il modo più veloce si è rivelato essere il seguente:
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
"s" è la stringa che vuoi convertire in un int. Questo codice presuppone che non avrai eccezioni durante la conversione. Quindi, se sai che i dati della tua stringa saranno sempre una sorta di valore int, il codice sopra è il modo migliore per ottenere velocità pura.
Alla fine, "y" avrà il tuo valore int.
bool result = Int32.TryParse(someString, out someNumeric)
Questo metodo proverà a convertire someStringin someNumerice restituirà a resultdipende se la conversione ha successo, truese la conversione ha successo e falsese la conversione non è riuscita. Prendi nota che questo metodo non genererà eccezioni se la conversione fallisce come ha Int32.Parsefatto il metodo e invece restituisce zero per someNumeric.
Per ulteriori informazioni, puoi leggere qui:
https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
e
come convertire una stringa in intero in C #