Cómo convertir cadenas a números enteros en C #

Respuestas:

134

Si está seguro de que se analizará correctamente, use

int.Parse(string)

Si no es así, use

int i;
bool success = int.TryParse(string, out i);

¡Precaución! En el caso siguiente, iserá igual a 0, no a 10 después de TryParse.

int i = 10;
bool failure = int.TryParse("asdf", out i);

Esto se debe a que TryParseutiliza un parámetro de salida , no un parámetro de referencia .

Brandon
fuente
2
@sslaitha, gracias. Si respondió suficientemente a su pregunta, recuerde marcarla como la respuesta.
Brandon
3
Solo tenga en cuenta que si tiene int i = 10; y use int. TryParse ("asdf", out i); que contendré 0 no 10 !!! Esto se debe a que TryParse usa una variable de salida, no una referencia.
CaffGeek
2
La "precaución" se aplica al tercer ejemplo, no al segundo. Me desconcertó un poco, ya que esperaba que "esto" se refiriera al ejemplo anterior, no al siguiente.
peter_mcc
22
int myInt = System.Convert.ToInt32(myString);

Como han mencionado varios otros, también puede usar int.Parse()y int.TryParse().

Si está seguro de que stringsiempre será un int:

int myInt = int.Parse(myString);

Si desea comprobar si stringrealmente es la intprimera vez:

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;
}
devuxer
fuente
10
int a = int.Parse(myString);

o mejor aún, mira en int.TryParse(string)

Neil N
fuente
6
string varString = "15";
int i = int.Parse(varString);

o

int varI;
string varString = "15";
int.TryParse(varString, out varI);

int.TryParsees más seguro ya que si pones algo más varString(por ejemplo, "fsfdsfs") obtendrás una excepción. Al usar int.TryParsecuando la cadena no se puede convertir en int, regresará 0.

Chico loco
fuente
5

Si está seguro de que tiene un número "real" en su cadena, o se siente cómodo con cualquier excepción que pueda surgir, use esto.

string s="4";
int a=int.Parse(s);

Para tener más control sobre el proceso, use

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;
}
Daniel Mošmondor
fuente
5

Haz algo como:

var result = Int32.Parse(str);
Tomas Vana
fuente
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);
madatanico
fuente
2

Aquí se comparan 4 técnicas.

La forma más rápida resultó ser la siguiente:

y = 0;
for (int i = 0; i < s.Length; i++)
       y = y * 10 + (s[i] - '0');

"s" es la cadena que desea convertir en un int. Este código asume que no tendrá ninguna excepción durante la conversión. Entonces, si sabe que los datos de su cadena siempre serán algún tipo de valor int, el código anterior es la mejor manera de obtener velocidad pura.

Al final, "y" tendrá su valor int.


fuente
2
bool result = Int32.TryParse(someString, out someNumeric)

Este método va a tratar de convertir someStringen someNumeric, y devolver una resultdepende de si la conversión es exitosa, truesi la conversión se realiza correctamente y falsesi la conversión fallado. Tenga en cuenta que este método no generará una excepción si la conversión falló como lo Int32.Parsehizo el método y, en cambio, devuelve cero para someNumeric.

Para obtener más información, puede leer aquí:

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
Cómo convertir cadenas a entero en C #

jet_choong
fuente
0
int i;

string result = Something;

i = Convert.ToInt32(result);
deepu
fuente
0

Puedes usar cualquiera,

    int i = Convert.ToInt32(myString);

o

    int i =int.Parse(myString);
Punto muerto
fuente
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));
    }
}
Abdo
fuente