如果第三个字符不是IsNumeric

时间:2016-02-23 14:35:37

标签: vb.net

我正在开发一个项目,在显示器上显示文本作为参考,但遇到一些逻辑问题。有人点击了一个按钮,提示InputBox用扫描仪插入条形码。

我有两种类型的零件号,一种是这样的“11n11110mch”,另一种是这样的“12311110mch”。我需要用于测试第3个字符是否为数字的代码。最终目标是在TextBox中将数字显示为“11.(某些字母)111.10 MCH”和“123.111.10 MCH”。如果我尝试“11n22210mch”,我会收到错误消息

  

从字符串“n”到“Double”类型的转换无效。

at

thirdChara = Mid$(VisPartID, 3, 1)

我不确定如何纠正或完成我想要做的事情。

我的代码:

Public Sub btnScan_Click(sender As Object, e As EventArgs) Handles btnScan.Click
    Dim ScanIDRaw As Object

    'Clear Scan Value
    ScanIDRaw = Nothing
    'Display message, title, And default value.                         
    ScanIDRaw = InputBox("Scan CDI", "InputBox")
    Do Until ScanIDRaw IsNot ""
        ScanIDRaw = InputBox("Part Number Needed, Scan CDI", "InputBox")
    Loop

    lblCDIPart.Text = ScanIDRaw
    HUD.ReferenceCardDataPull()
End Sub

Public Async Sub ReferenceCardDataPull()
    Dim PartID As String
    Dim VisPartID As String
    Dim thirdChara As String

    'Other Code 
    'Something
    'Something
    VisPartID = Main.lblCDIPart.Text
    thirdChara = Mid$(VisPartID, 3, 1)
    If thirdChara = Not IsNumeric(thirdChara) Then
        VisPartID = VisPartID.Insert(2, ".")
        VisPartID = VisPartID.Insert(7, ".")
        VisPartID = VisPartID.Insert(10, " ")
        VisPartID = VisPartID.ToUpper
        lblPart.Text = VisPartID
    Else
        VisPartID = VisPartID.Insert(3, ".")
        VisPartID = VisPartID.Insert(8, ".")
        VisPartID = VisPartID.Insert(11, " ")
        VisPartID = VisPartID.ToUpper
        lblPart.Text = VisPartID
    End If
End Sub

1 个答案:

答案 0 :(得分:0)

If Not isNumeric(thirdChara) Then

但你真的应该使用VB.Net方法而不是旧的VB6风格

dim position3 as integer
thirdChara = VisPartID.SubString(2,1) ' 2 because we're 0 based
if not integer.tryparse(thirdChara, position3) then
  'do stuff if not a number
else
  'it's a number
end if

tryparse将根据解析结果返回一个布尔值。成功解析后,它会将解析后的值存储到变量中(在本例中为Position3)

我还建议启用Option Strict,因为它会立即通知您不能将字符串隐式转换为布尔值。

含义:正在测试字符串thirdChara是否与IsNumeric方法的Not(True | False)结果相等。