2011-10-03 192 views
1

我有一个接收包含数字的字符串的脚本。将字符串转换为数字

字符串可能是“1000”或“1000.25”或“1111111111111111111111111”或“abc111”

我希望能够首先检查它是否是一个数字,如果不是失败,如果有分数也会失败。

我无法转换为合适的数字类型,但仍然可以检查上述情况。

基本上我需要检查字符串只包含一个整数,不管这个数字有多大。

真的很感谢这一个帮助。

感谢

戴夫

回答

0

这是我用过实现的功能,你想要什么:

Function is_numeric(ByVal sText) 
    Dim iCnt, sChr 

    is_numeric = True 

    If IsNull(sText) OR sText = "" Then 
     is_numeric = False 
     Exit Function 
    End If 

    If sText = "" Then 
     is_numeric = False 
     Exit Function 
    End If 

    For iCnt = 1 To Len(sText) 
     sChr = Mid(sText, iCnt, 1) 
      If Asc(sChr) < 48 OR Asc(sChr) > 57 Then 
      is_numeric = False 
      Exit For 
     End If 
    Next 
End Function 
+1

谢谢你。我喜欢这个解决方案,但稍微修改了一下,在字符串中的每个字符上都做了一个isNumeric,这对所有非数字字符都会失败。 – Dave

0

难道你有机会去发现CInt和CDbl了吗?

2

使用则IsNumeric检查,如果是一个号码,然后使用CINT转换

+0

请记住,整数数据类型被限制在-32,768到32,767的范围内。您可能想要使用长数据类型(用clng()进行转换),而该数据类型的范围限制为-2,147,483,648至2,147,483,647。我刚刚测试并在运行cint(32768)或clng(2147483648)时出现溢出错误。 – dmogle