检查数组中的字符串

时间:2017-01-24 02:16:08

标签: vb.net isnumeric

我有一个存储在数组中的字符串,需要检查每个字符串的第5个字符是否为数字。我使用的代码是:

If Mid(arr(i), 5, 1) = IsNumeric(True) Then
      MsgBox("Number")
End If

发出错误:

  

未处理的类型' System.InvalidCastException'发生在Microsoft.VisualBasic.dll

     

其他信息:从字符串转换""输入'布尔'无效。

3 个答案:

答案 0 :(得分:3)

您最初将问题标记为,但VBA不会抛出System.InvalidCastException或其他任何例外情况; 确实如此。

如果IsNumeric(True)是数字,则

True会返回True。您想验证从数组中检索的字符串是否为数字;将从数组中检索的字符串作为参数:

If IsNumeric(Mid(arr(i), 4, 1)) Then
    MsgBox("Number")
End If

你的代码读起来像VB6 / VBA,因为:

Imports Microsoft.VisualBasic

该命名空间包含类似VB6的内容,您根本不需要使用它们。 .net的美妙之处在于一切都是对象,因此假设数组是String的数组,您可以调用实际的String实例方法而不是VB6的{{ 1}}功能。

Mid

或者,因为您只对1个字符感兴趣,而Dim theFifthCharacter As String = arr(i).Substring(4, 1) 本身就是String,您可以这样做:

IEnumerable(Of Char)

请注意,off-by-one-in .net索引从0开始,所以如果你想要第5项,你将获取索引4。

现在,如果您想查看它是否为数字,您可以尝试 解析

Dim theFifthCharacter As Char = arr(i)(4)

最后,如果你想要一个消息框,请使用WinForms'Dim digitValue As Integer If Int32.TryParse(theFifthCharacter, digitValue) Then 'numeric: digitValue contains the numeric value Else 'non-numeric: digitValue contains an Integer's default value (0) End If 而不是VB6的MessageBox

MsgBox

答案 1 :(得分:1)

更正确的方法是:

If Char.IsDigit(arr(i)(4)) Then

答案 2 :(得分:0)

您的语法不正确。它应该是:

If IsNumeric(Mid(arr(i), 5, 1)) Then