Sdílet prostřednictvím


Jak: převést řetězec na int (C# program televize)

Tyto příklady ukazují některé způsoby lze převést řetězec se int.Takový převod může být užitečné při získávání číselný vstup z argument příkazového řádku, například.Existují podobné metody pro převedení řetězce na jiné číselné typy, jako float nebo dlouho.Následující tabulka uvádí některé z těchto metod.

Číselný typ

Metoda

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)

Příklad

Tento příklad volá ToInt32(String) metodu pro převedení vstup řetězec k int .Program zachytí dva nejběžnější výjimky, které mohou být vyvolány metodou, FormatException a OverflowException.Pokud číslo může být zvýšeno bez přetečení integer umístění úložiště, program přidá 1 výsledek a vytiskne výstup.

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.

Jiný způsob převodu string k int prostřednictvím Parse nebo TryParse metody System.Int32 struktury.ToUInt32 Používá metodu Parse interně.Pokud řetězec není platný formát Parse vyvolá výjimku, že TryParse nevyvolá výjimku, ale vrací false.Následující příklady ukazují úspěšné i neúspěšné volání Parse 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.

Viz také

Úkoly

Jak: zjistit, zda řetězec představuje číselnou hodnotu (Příručka programování C#)

Referenční dokumentace

Typy (Příručka programování C#)