2016年3月26日 星期六

判斷字串是否表示數值

source :MSDN

若要判斷字串是否為指定之數字型別 (Numeric Type) 的有效表示,請使用靜態 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 參數設為字串的數值。

System_CAPS_note注意事項

字串可能只包含數字字元,並且對於您使用其 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");       

沒有留言:

張貼留言