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, i
sarà uguale a 0, non a 10 dopo TryParse
.
int i = 10;
bool failure = int.TryParse("asdf", out i);
Questo perché TryParse
utilizza 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 string
sarà sempre un int
:
int myInt = int.Parse(myString);
Se desideri verificare se string
è davvero un int
primo:
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.TryParse
quando 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 someString
in someNumeric
e restituirà a result
dipende se la conversione ha successo, true
se la conversione ha successo e false
se la conversione non è riuscita. Prendi nota che questo metodo non genererà eccezioni se la conversione fallisce come ha Int32.Parse
fatto 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 #