为什么我会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)
答案 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,但尝试转换会给您带来异常。