如何判斷字串是否表示數值 (C# 程式設計手冊)
若要判斷字串是否為所指定數值類型的有效呈現,請使用靜態 TryParse
方法,而這個方法是由所有基本數字類型以及 DateTime 和 IPAddress 此等類型所實作。 下列範例示範如何判斷 "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
。
範例
下列範例示範如何搭配使用 TryParse
與 long
、byte
和 decimal
值的字串呈現。
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 安全性
請一律使用 TryParse
或 Parse
方法來驗證文字方塊和下拉式方塊這類控制項的使用者輸入。