Jak zjistit, jestli řetězec představuje číselnou hodnotu (Průvodce programováním v C#)
Chcete-li zjistit, zda je řetězec platným vyjádřením zadaného číselného typu, použijte statickou TryParse
metodu implementovanou všemi primitivními číselnými typy a také typy, jako IPAddressDateTime a . Následující příklad ukazuje, jak určit, zda je "108" platným int.
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
Pokud řetězec obsahuje nečíselné znaky nebo číselná hodnota je pro zadaný konkrétní typ příliš velká nebo příliš malá, TryParse
vrátí hodnotu false a nastaví parametr na nulu. V opačném případě vrátí hodnotu true a nastaví parametr na číselnou hodnotu řetězce.
Poznámka:
Řetězec může obsahovat pouze číselné znaky a stále není platný pro typ, jehož TryParse
metodu používáte. Například "256" není platná hodnota, byte
ale je platná pro int
. "98,6" není platná hodnota, int
ale je platná decimal
.
Příklad
Následující příklady ukazují, jak se používají TryParse
s řetězcovými long
reprezentacemi , byte
a decimal
hodnotami.
string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine("number1 now = {0}", number1);
else
Console.WriteLine("numString is not a valid long");
byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine("number2 now = {0}", number2);
else
Console.WriteLine("numString is not a valid byte");
decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine("number3 now = {0}", number3);
else
Console.WriteLine("number3 is not a valid decimal");
Robustní programování
Primitivní číselné typy také implementují statickou metodu Parse
, která vyvolá výjimku, pokud řetězec není platným číslem. TryParse
je obecně efektivnější, protože vrátí hodnotu false, pokud číslo není platné.
Zabezpečení .NET
K ověření uživatelského vstupu z ovládacích prvků, jako jsou textová pole a pole se seznamem, používejte TryParse
vždy metody nebo Parse
metody.