Como converter string em inteiro em C #

Respostas:

136

Se você tiver certeza de que analisará corretamente, use

int.Parse(string)

Se você não é, use

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

Cuidado! No caso abaixo, iserá igual a 0, não 10 após o TryParse.

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

Isso ocorre porque TryParseusa um parâmetro out , não um parâmetro ref .

Brandon
fonte
2
@sslaitha, obrigado. Se respondeu suficientemente à sua pergunta, lembre-se de marcá-la como a resposta.
Brandon
3
Observe que se você tiver int i = 10; e use int.ExperimenteParse ("asdf", out i); que vou conter 0 não 10 !!! Isso ocorre porque o TryParse usa uma variável out, não uma ref.
CaffGeek
2
O "cuidado" se aplica ao terceiro exemplo - não ao segundo. Fiquei confuso um pouco, já que esperava que o "isso" se referisse ao exemplo acima, não abaixo.
peter_mcc
22
int myInt = System.Convert.ToInt32(myString);

Como vários outros mencionaram, você também pode usar int.Parse()e int.TryParse().

Se você tiver certeza de que stringsempre será um int:

int myInt = int.Parse(myString);

Se você gostaria de verificar se stringé realmente a intprimeira:

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
fonte
11
int a = int.Parse(myString);

ou melhor ainda, procure int.TryParse(string)

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

ou

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

int.TryParseé mais seguro, pois se você colocar algo mais varString(por exemplo "fsfdsfs"), obterá uma exceção. Usando int.TryParsequando a string não pode ser convertida em int, ela retornará 0.

MadBoy
fonte
5

Se você tiver certeza de que possui um número "real" em sua string, ou se sentir confortável com qualquer exceção que possa surgir, use-o.

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

Para ter mais controle sobre o processo, 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
fonte
5

Faça algo como:

var result = Int32.Parse(str);
Tomas Vana
fonte
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);
madatânico
fonte
2

4 técnicas são comparadas aqui.

O caminho mais rápido acabou sendo o seguinte:

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

"s" é a string que você deseja converter em um int. Este código assume que você não terá exceções durante a conversão. Portanto, se você sabe que seus dados de string sempre serão algum tipo de valor int, o código acima é a melhor maneira de buscar velocidade pura.

No final, "y" terá seu valor int.


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

Este método tentará converter someStringem someNumerice retornar um resultdepende se a conversão foi bem-sucedida, truese a conversão foi bem-sucedida e falsese a conversão falhou. Observe que este método não lançará exceção se a conversão falhar como o Int32.Parsemétodo fez e, em vez disso, retorna zero para someNumeric.

Para obter mais informações, você pode ler aqui:

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
Como converter string para inteiro em C #

jet_choong
fonte
0
int i;

string result = Something;

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

Você pode usar qualquer um,

    int i = Convert.ToInt32(myString);

ou

    int i =int.Parse(myString);
Impasse
fonte
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
fonte