转换字符串""输入'整数'无效

时间:2014-07-31 11:07:41

标签: vb.net

为什么我会Conversion from string "" to type 'Integer' is not valid.?匹配是一个字符串,当我将它与""进行比较时它给了我这个错误。该程序在输入值时有效,但如果我想检查空字符串(最后一个ElseIf),我会收到错误。

Dim total As Double
Dim Match As String = ""

If Match.EndsWith("HA") OrElse Match.Contains("ha") OrElse Match.Contains("Ha") Then
    Dim nonNumericCharacters As New Regex("\D")
    Dim numericOnlyString As String = nonNumericCharacters.Replace(Match, String.Empty)
    total = numericOnlyString * 10000
ElseIf Match.Contains("Ha m²") Then
    Dim nonNumericCharacters As New Regex("\D")
    Dim numericOnlyString As String = nonNumericCharacters.Replace(Match, String.Empty)
    total = numericOnlyString * 10000
ElseIf Match.Contains("m²") OrElse Match.Contains("sqm") Then
    Dim nonNumericCharacters As New Regex("\D")
    Dim numericOnlyString As String = nonNumericCharacters.Replace(Match, String.Empty)
    total = Val(numericOnlyString)
ElseIf CInt(Match) = 0 OrElse Match = "" Then
    total = Val(String.Empty)
Else
    total = Match
End If
MessageBox.Show(total)

2 个答案:

答案 0 :(得分:1)

如Bjørn-RogerKringsjå所评论,您需要重新排序表达式以首先检查“坏”字符串。此外,您无法将total设置为空字符串的Val。您的代码可以调整为;

...
ElseIf Match = "" OrElse CInt(Match) = 0 Then
    total = 0
Else
...

但是,为了让你学到一些东西,我会像这样重写那段代码;

Dim ParseResult As Integer    
...
ElseIf String.IsNullOrWhiteSpace(Match) OrElse Not Integer.TryParse(Match, ParseResult) Then
    total = 0
Else
...

首先检查Match字符串是否为Nothing,为空或只是空格/制表符/等,如果没有,则尝试将其解析为整数。如果失败,则将总数设置为零。您当然应该使用Integer.TryParse完成所有操作并使用结果,但我希望这有帮助。

答案 1 :(得分:0)

你得到“从字符串转换”“到'整数'类型无效。”因为从字符串“”到“整数”类型的转换无效。

“”不是有效号码。

您需要检测此案例并自行选择正确的号码,例如0,但尝试转换会给您带来异常。