Come convertire una stringa in un numero intero in C #


Risposte:


134

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 .


2
@sslaitha, grazie. Se ha risposto in modo sufficiente alla tua domanda, ricordati di contrassegnarla come risposta.
Brandon

3
Nota solo che se hai int i = 10; e usa int.TryParse ("asdf", out i); che conterrò 0 non 10 !!! Questo perché TryParse utilizza una variabile out, non un ref.
CaffGeek

2
La "cautela" si applica al terzo esempio, non al secondo. Mi ha lasciato un po 'perplesso poiché mi aspettavo che "questo" si riferisse all'esempio sopra, non sotto.
peter_mcc

22
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;
}

10
int a = int.Parse(myString);

o meglio ancora, guarda dentro int.TryParse(string)


6
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.


5

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;
}


3
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);

2

4 tecniche sono valutate qui.

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.


2
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 #


0
int i;

string result = Something;

i = Convert.ToInt32(result);

0

Puoi usare entrambi,

    int i = Convert.ToInt32(myString);

o

    int i =int.Parse(myString);

0
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));
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.