Visual Basic - 输入验证

时间:2015-05-20 19:33:02

标签: validation

我需要一些小问题的帮助。我没有编程很长,也无法弄清楚如何解决这个问题。我有一个小型的学校项目,我无法弄清楚为什么我在验证输入时会收到此错误。

例如,我通过创建一个函数来检查输入是否有效以及在最小和最大范围之间,根据输入的值返回true或false值。我使用函数的原因是因为我正在进行多次类似的检查,而不是再次重写它,这是执行此任务的最佳方法。

Do While inputValid(string, min, max)

这是我的验证,下面是验证这一点的简单功能。

Private Function inputValid(input As String, min As Integer, max As Integer)
    If Not IsNumeric(input) Then
        Return False
    End If

    If input > min Or input < max Then
        Return False
    Else
        Return True
    End If
End Function

出于某种原因,尽管在检查值是否在数值范围内之前应确保该值为数字。当我输入任何内容或输入一个字符串时,它仍会向我发送错误,因为它正在尝试将其转换为双精度但是如果我在范围检查之间没有进行任何操作,则检查它是否正常,如果它只是数字而没有错误。

任何人都可以帮我解决这个问题吗?谢谢!

4 个答案:

答案 0 :(得分:1)

您可以使用CInt将字符串转换为Integer

Private Function inputValid(input As String, min As Integer, max As Integer)
    Dim v as Integer
    If Not IsNumeric(input) Then
        Return False
    End If
    v=CInt(input)
    If v < min Or v > max Then
        Return False
    Else
        Return True
    End If
End Function

答案 1 :(得分:1)

使用正则表达式对字符串

进行数字验证可能会更好
Private Function inputValid(input As String, min As Integer, max As Integer)
    dim regex as new Regex("[\d]+")    
    If not regex.isMatch(input) OrElse cint(input) > min OrElse cint(input) < max Then
        Return False
    Else
        Return True
    End If
End Function

答案 2 :(得分:0)

您可以使用Integer.TryParse函数检查字符串是否可以转换为整数。

此外,您可以返回一个比较结果的布尔值:而不是If x > 4 Then Return True之类的内容,您可以使用Return x > 4

所以你的功能看起来像

Private Function StringIsValidInteger(s As String, min As Integer, max As Integer) As Boolean
    Dim tmp As Integer

    If Integer.TryParse(s, tmp) Then
        Return (tmp >= min AndAlso tmp <= max)
    End If

    Return False

End Function

答案 3 :(得分:0)

对不起,伙计们。我正在返回true和false错误的方法出现,因为我需要继续循环它需要是真实的,在常规验证中通常是错误的。

通过简单地在inputValid函数中更改true和false返回类型,它可以正常工作。

感谢您的帮助。