巴黎人官网-巴黎人734手机版网址

在C#中调用Microsoft.VisualBasic命名空间下的类型验证函数

VB.NET中还是有很多有用的东西的。比如VB.NET可以直接调用Microsoft.VisualBasic命名空间下的各种有用的函数,特别是一些类型验证函数(IsDate,IsNumeric)就十分有用。就拿判断是否为数字来说,在网上我找到了在C#中用到的三种方法(但都有各自的不足之处):
1、将字符串分解成Char,然后用Char.IsNumber(c)验证 图片 1public bool IsNumericChar(string str)
图片 2图片 3图片 4{
图片 5    if (str == null || str.Length==0) 
图片 6图片 7    图片 8{
图片 9        return false; 
图片 10    }
图片 11    foreach(char c in str) 
图片 12图片 13    图片 14
图片 15        if (!Char.IsNumber(c)) 
图片 16图片 17        图片 18
图片 19            return false; 
图片 20        } 
图片 21    } 
图片 22    return true; 
图片 23}

其实用正则表达式也可以
static bool IsNumeric(string str)
{
if (str==null || str.Length==0)
return false;
foreach(char c in str)
{
if (!Char.IsNumber(c))
{
return false;
}
}
return true;
}

缺点:只能验证正整形数字,对浮点数,负数无效。

正则表达的写法是:

2、用正则表达式来判断是否为数字

static bool IsNumeric(string str)
{
System.Text.RegularExpressions.Regex reg1
= new System.Text.RegularExpressions.Regex(@"^[-]?d+[.]?d*$");
return reg1.IsMatch(str);
}

图片 24public bool IsNumericRegex(string str)
图片 25图片 26图片 27{
图片 28    System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"^[-]?d+[.]?d*$");   
图片 29    return reg.IsMatch(str);  
图片 30}

其实最单的是用VB.NET中的函数,以下代码段
using Microsoft.VisualBasic

缺点:数字类型的形式多样,像以科学计数法出现的是形式就不能判断,如:1.234568E+008。当然可以考虑修改正则表达式,但是终究不清楚还有何种形式我们没有考虑到。

Information.IsNumeric(str_input)
返回true或false判断是否数字
不过在编译时要加上-lMicrosoft.VisualBasic才能编译成功
CSDN 网友 ( 2005-11-24)
那如果直接这么作呢
try{
float f=float.parse(temp);
}
catch(exception ex)
{
MessageBox.Show("这不是数字");
}
dancefire ( 2005-11-13)
我觉得正则表达式不太正确,小数点前面的前导零应该允许省略,小数点后面的0,也允许省略,但不允许单独以小数点形式出现。你的这个表达式无法满足前导零省略的情况。而且,最重要的,"."在正则表达式中表示任意字符,因此,对于你的表达式,2a2,也能够通过测试。
^[-]?d+[.]?d*$

3、用try...catch...将指定字符串转为数字,如果转换不成功则表示不是数字

应该改为如下所示:
^[-]?(d+.?d*|.d+)$ 

本文由巴黎人官网发布于计算机编程,转载请注明出处:在C#中调用Microsoft.VisualBasic命名空间下的类型验证函数

您可能还会对下面的文章感兴趣: