public bool isnumericchar(string str)

{
if (str == null || str.length==0) 
{
return false;
}
foreach(char c in str) 
{
if (!char.isnumber(c)) 
{
return false;
}
}
return true;
}缺點:只能驗證正整形數(shù)字,對浮點數(shù),負數(shù)無效。
2、用正則表達式來判斷是否為數(shù)字
public bool isnumericregex(string str)

{
system.text.regularexpressions.regex reg = new system.text.regularexpressions.regex(@"^[-]?/d+[.]?/d*$");
return reg.ismatch(str);
}缺點:數(shù)字類型的形式多樣,像以科學(xué)計數(shù)法出現(xiàn)的是形式就不能判斷,如:1.234568e+008。當(dāng)然可以考慮修改正則表達式,但是終究不清楚還有何種形式我們沒有考慮到。
3、用try...catch...將指定字符串轉(zhuǎn)為數(shù)字,如果轉(zhuǎn)換不成功則表示不是數(shù)字
public bool isnumerictry(string str)

{
try
{
// 先判斷是否為整形
int32.parse(str);
}
catch
{
// 在判斷是否為浮點型
try
{
double.parse(str);
}
catch
{
return false;
}
}
return true;
}缺點:功能倒是實現(xiàn)了,不過性能要大打折扣。(有人測試過,不過我沒有測試
)
我們?yōu)槭裁床挥梦④浱峁┑膍icrosoft.visualbasic.isnumeric(obj)函數(shù)呢?在c#中不能直接調(diào)用microsoft.visualbasic命名空間下的函數(shù),但是可以考慮建一個vb.net項目,然后在c#中引用它。方法如下:
1、建一個vb.net項目,并添加一個名為validator的驗證函數(shù)類。

namespace vbutilitiesnamespace vbutilities
public class validatorclass validator
public shared function isnumeric()function isnumeric(byval obj as object) as boolean
return microsoft.visualbasic.isnumeric(obj)
end function
end class
end namespace
2、在需要用到該函數(shù)的c#項目中引用該程序集。用validator.isnumeric(obj)的方法調(diào)用就可以了。
利用microsoft.visualbasic命名空間下的函數(shù),我們還可以實現(xiàn)更多的驗證功能,比如驗證是否是日期類型(用isdate)。這樣要省掉不少麻煩去自己編寫。還有別的方法嗎?拿出來一起分享一些吧!
新聞熱點
疑難解答
圖片精選