我有一个接收包含数字的字符串的脚本。将字符串转换为数字
字符串可能是“1000”或“1000.25”或“1111111111111111111111111”或“abc111”
我希望能够首先检查它是否是一个数字,如果不是失败,如果有分数也会失败。
我无法转换为合适的数字类型,但仍然可以检查上述情况。
基本上我需要检查字符串只包含一个整数,不管这个数字有多大。
真的很感谢这一个帮助。
感谢
戴夫
我有一个接收包含数字的字符串的脚本。将字符串转换为数字
字符串可能是“1000”或“1000.25”或“1111111111111111111111111”或“abc111”
我希望能够首先检查它是否是一个数字,如果不是失败,如果有分数也会失败。
我无法转换为合适的数字类型,但仍然可以检查上述情况。
基本上我需要检查字符串只包含一个整数,不管这个数字有多大。
真的很感谢这一个帮助。
感谢
戴夫
这是我用过实现的功能,你想要什么:
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
难道你有机会去发现CInt和CDbl了吗?
使用则IsNumeric检查,如果是一个号码,然后使用CINT转换
请记住,整数数据类型被限制在-32,768到32,767的范围内。您可能想要使用长数据类型(用clng()进行转换),而该数据类型的范围限制为-2,147,483,648至2,147,483,647。我刚刚测试并在运行cint(32768)或clng(2147483648)时出现溢出错误。 – dmogle
谢谢你。我喜欢这个解决方案,但稍微修改了一下,在字符串中的每个字符上都做了一个isNumeric,这对所有非数字字符都会失败。 – Dave