HOW TO:判斷字串是否表示數值 (C# 程式設計手冊)
更新:2007 年 11 月
若要判斷字串是否為指定之數字型別 (Numeric Type) 的有效表示,請使用靜態 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。
安全性
一律使用 TryParse 或 Parse 方法驗證控制項的使用者輸入,例如文字方塊和下拉式方塊。
請參閱
工作
HOW TO:將位元組陣列轉換為 int (C# 程式設計手冊)
HOW TO:將 string 轉換為 int (C# 程式設計手冊)
HOW TO:在十六進位字串和數字型別間轉換 (C# 程式設計手冊)