Share via


如何判斷字串是否表示數值 (C# 程式設計手冊)

若要判斷字串是否為所指定數值類型的有效呈現,請使用靜態 TryParse 方法,而這個方法是由所有基本數字類型以及 DateTimeIPAddress 此等類型所實作。 下列範例示範如何判斷 "108" 是否為有效 int

int i = 0;
string s = "108";  
bool result = int.TryParse(s, out i); //i now = 108  

如果字串包含非數值字元,或所指定之特定類型的數值太大或太小,則 TryParse 會傳回 false,並將 out 參數設定為零。 否則會傳回 true,並將 out 參數設定為字串的數值。

注意

字串只能包含數值字元,而且仍然不適用於您所使用 TryParse 方法的類型。 例如,"256" 不是 byte 的有效值,但為 int 的有效值。 "98.6" 不是 int 的有效值,但為有效的 decimal

範例

下列範例示範如何搭配使用 TryParselongbytedecimal 值的字串呈現。


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");

穩固程式設計

基本數值類型也會實作 Parse 靜態方法,但如果字串不是有效數字,則會擲回例外狀況。 TryParse 通常更具效率,因為它在數字不正確時就會傳回 false。

.NET 安全性

請一律使用 TryParseParse 方法來驗證文字方塊和下拉式方塊這類控制項的使用者輸入。

另請參閱