Partilhar via


Como converter uma cadeia de caracteres em um número (Guia de Programação C#)

Esses exemplos mostram algumas diferentes maneiras que você pode converter cadeia de caracteres a int.Tal conversão pode ser útil para obter a entrada numérica de um argumento de linha de comando, por exemplo.Os métodos semelhantes existem convertendo cadeias de caracteres em outros tipos numéricos, como float ou long.A tabela abaixo lista alguns dos métodos.

tipo numérico

Método

decimal

ToDecimal(String)

float

ToSingle(String)

double

ToDouble(String)

short

ToInt16(String)

int

ToInt32(String)

long

ToInt64(String)

ushort

ToUInt16(String)

uint

ToUInt32(String)

ulong

ToUInt64(String)

Exemplo

este exemplo chama o método de ToInt32(String) para converter uma entrada cadeia de caracteres a int .O programa captura as duas exceções mais comuns que podem ser lançadas por esse método, FormatException e OverflowException.Se o número pode ser incrementado sem transbordar o local de armazenamento de inteiros, o programa adiciona ao resultado 1 e imprime a saída.

static void Main(string[] args)
{
    int numVal = -1;
    bool repeat = true;

    while (repeat == true)
    {
        Console.WriteLine("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive).");

        string input = Console.ReadLine();

        // ToInt32 can throw FormatException or OverflowException.
        try
        {
            numVal = Convert.ToInt32(input);
        }
        catch (FormatException e)
        {
            Console.WriteLine("Input string is not a sequence of digits.");
        }
        catch (OverflowException e)
        {
            Console.WriteLine("The number cannot fit in an Int32.");
        }
        finally
        {
            if (numVal < Int32.MaxValue)
            {
                Console.WriteLine("The new value is {0}", numVal + 1);
            }
            else
            {
                Console.WriteLine("numVal cannot be incremented beyond its current value");
            }
        }
        Console.WriteLine("Go again? Y/N");
        string go = Console.ReadLine();
        if (go == "Y" || go == "y")
        {
            repeat = true;
        }
        else
        {
            repeat = false;
        }
    }
    // Keep the console open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();    
}
// Sample Output:
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// 473
// The new value is 474
// Go again? Y/N
// y
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// 2147483647
// numVal cannot be incremented beyond its current value
// Go again? Y/N
// Y
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive).
// -1000
// The new value is -999
// Go again? Y/N
// n
// Press any key to exit.

Outra maneira para converter string a int é com os métodos de Parse ou de TryParse de estrutura de System.Int32 .o método de ToUInt32 usa Parse internamente.Se a cadeia de caracteres não é válido em um formato Parse gera uma exceção, enquanto TryParse não lança uma exceção mas retorna false.Os exemplos a seguir mostram chamadas com êxito e malsucedidos a Parse e a TryParse.

int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
// Output: -105
// TryParse returns true if the conversion succeeded
// and stores the result in the specified variable.
int j;
bool result = Int32.TryParse("-105", out j);
if (true == result)
    Console.WriteLine(j);
else
    Console.WriteLine("String could not be parsed.");
// Output: -105
try
{
    int m = Int32.Parse("abc");
}
catch (FormatException e)
{
    Console.WriteLine(e.Message);
}
// Output: Input string was not in a correct format.
string inputString = "abc";
int numValue;
bool parsed = Int32.TryParse(inputString, out numValue);

if (!parsed)
    Console.WriteLine("Int32.TryParse could not parse '{0}' to an int.\n", inputString);

// Output: Int32.TryParse could not parse 'abc' to an int.

Consulte também

Tarefas

Como: determinar se uma seqüência de caracteres representa um valor numérico (guia de programação do C#)

Referência

Tipos (guia de programação do C#)