今天在改公司以前一个软件,代码中有一个地方需要判断一个字符串存储的是不是一个数字,自然让我想起VB的IsNumeric函数。 由于是Delphi,所以只有另外“打造”了。。
小函数贴上:
function IsNumeric(strInPut:string):Boolean;
var
Value:Double;
Code:Integer;
begin
Val(strInPut,Value,Code);
result:=Code=0;
end;
经常在DataGridView控件中验证一个值是否为数值,但有些时候担心是一个空值,怕报错,想先用IsNothing函数判断一下再进行数值判断就不会报错了。
其实完全不用这样也可以的。
如下例中,
代码如下:
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
rtb.Text = "第一行第一列:现在isnumeric的值:" & IsNumeric(dgv.Rows(0).Cells(0).Value) & vbCrLf
rtb.Text &= "第一行第二列:现在的值" & IsNumeric(dgv.Rows(0).Cells(1).Value) & vbCrLf
End SubEnd Class
显示的如果就是上面的,当我在第一列中,完全就没输入任何字符,包括空格,直接使用IsNumeric函数就已经判断为假了。所以可以直接略过那个判断空值的函数。
方案二:正则表达式(推荐)
a)
using System;
using System.Text.RegularExpressions;public bool IsNumber(String strNumber)
{
Regex objNotNumberPattern=new Regex("[^0-9.-]");
Regex objTwoDotPattern=new Regex("[0-9]*[.][0-9]*[.][0-9]*");
Regex objTwoMinusPattern=new Regex("[0-9]*[-][0-9]*[-][0-9]*");
String strValidRealPattern="^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
String strValidIntegerPattern="^([-]|[0-9])[0-9]*$";
Regex objNumberPattern =new Regex("(" + strValidRealPattern +")|(" + strValidIntegerPattern + ")");return !objNotNumberPattern.IsMatch(strNumber) &&
!objTwoDotPattern.IsMatch(strNumber) &&
!objTwoMinusPattern.IsMatch(strNumber) &&
objNumberPattern.IsMatch(strNumber);
}b)
public static bool IsNumeric(string value)
{
return Regex.IsMatch(value, @"^[+-]?/d*[.]?/d*$");
}
public static bool IsInt(string value)
{
return Regex.IsMatch(value, @"^[+-]?/d*$");
}
public static bool IsUnsign(string value)
{
return Regex.IsMatch(value, @"^/d*[.]?/d*$");
}
今天在改公司以前一个软件,代码中有一个地方需要判断一个字符串存储的是不是一个数字,自然让我想起VB的IsNumeric函数。 由于是Delphi,所以只有另外“打造”了。。
小函数贴上:
function IsNumeric(strInPut:string):Boolean;
var
Value:Double;
Code:Integer;
begin
Val(strInPut,Value,Code);
result:=Code=0;
end;
转载于:https://www.cnblogs.com/forads/archive/2009/05/23/2161172.html
今天在改公司以前一个软件,代码中有一个地方需要判断一个字符串存储的是不是一个数字,自然让我想起VB的IsNumeric函数。 由于是Delphi,所以只有另外“打造”了。。
小函数贴上:
function IsNumeric(strInPut:string):Boolean;
var
Value:Double;
Code:Integer;
begin
Val(strInPut,Value,Code);
result:=Code=0;
end;