子串返回1小于VB

时间:2017-11-21 09:50:07

标签: vb.net

VB代码用于读取复杂的条形码并分离其AI。这段代码正确处理复杂条形码01984000000726283102002046102577855921221505并正确通过ElseIf:

ElseIf (ScannedBarcode.Length >= 44 AndAlso (ScannedBarcode.Substring(0, 2) = "01" _
                                       And ScannedBarcode.Substring(16, 4) = "3102" _
                                       And ScannedBarcode.Substring(26, 2) = "10" _
                                       And ScannedBarcode.Substring(36, 2) = "21")) Then
                oProduct.ProductCode = ScannedBarcode.Substring(2, 14)
                oProduct.ExpiryDate = "" 'Expiry date
                oProduct.Qty = ScannedBarcode.Substring(20, 6) / 100

然而,当使用相同的方法来处理具有不同排列的AI的不同复杂条形码时,子串似乎返回小于指定长度的条码,例如, 310而不是3102。

ElseIf ScannedBarcode.Length >= 44 AndAlso (ScannedBarcode.Substring(0, 2) = "01" _
                             And ScannedBarcode.Substring(16, 2) = "10" _
                             And ScannedBarcode.Substring(26, 2) = "17" _
                             And ScannedBarcode.Substring(35, 4) = "3102") Then
                oProduct.ProductCode = ScannedBarcode.Substring(2, 14)
                oProduct.ExpiryDate = ScannedBarcode.Substring(27, 6) 'Expiry date
                oProduct.Qty = ScannedBarcode.Substring(38, 6) / 100

任何建议都将不胜感激,谢谢

1 个答案:

答案 0 :(得分:0)

首先,您的第二个条形码只有43个字符,而不是44个。也许正因为如此,您的SubString之一并不匹配:

ScannedBarcode.Substring(26, 2)

它返回71而不是您期望的17