vb.net - 在VB中将空格转换为int会导致错误
问题描述
我们有一个用 VB 编写的旧应用程序来解析文件。尝试将空格转换为整数时出现错误。我认为程序应该继续并为LoadNumber分配 0 。这可能与旧的 VB 库文件有关吗?因为我在 Visual Studio 的 VB 控制台应用程序中运行了代码,它似乎运行良好。我如何找出导致问题的原因?
Overridable Sub Parse01()
BOLNumber = InputLine.Substring(12, 20)
SourceNumber = InputLine.Substring(2, 5)
Carrier = InputLine.Substring(116, 6)
Driver = InputLine.Substring(37, 15)
DateFinished = InputLine.Substring(77, 8)
TimeFinished = InputLine.Substring(87, 2) & ":" & InputLine.Substring(89, 2)
Finish_DateTime = DateFinished.ToString & " " & TimeFinished
TruckNumber = InputLine.Substring(124, 5)
'LoadNumber = InputLine.Substring(107, 7)
Dim loadNumberAsInt As Integer
If Integer.TryParse(InputLine.Substring(107, 7), loadNumberAsInt) Then
LoadNumber = InputLine.Substring(107, 7)
Else
LoadNumber = "0"
End If
CustomerNumber = InputLine.Substring(57, 15)
TimeIn = InputLine.Substring(91, 4)
End Sub
错误
Could not process the file for shipper:0001 - Conversion from string " " to type 'Integer' is not valid. - at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)
at Program.Reader.Parse01()
at Program.Reader.ProcessRecords()
at Program.Reader.ParseInputLine()
at Program.Reader.Parse(String Path)
at Program.Reader.ProcessFile(String Source, String Number, EDI_File_Reader EDI_R)
解决方案
错误信息中有 15 个空格。所以问题将出在其他地方。我想它可能在这里。
CustomerNumber = InputLine.Substring(57, 15)
也许 CustomerNumber 应该是一个字符串。如果没有,那么我建议你也对这个做一个 TryParse。
推荐阅读
- android - 如何隐藏吐司“您的音频将被发送到谷歌以提供语音识别服务。” 在语音识别器中?
- c# - 递归列表到格式良好的表
- laravel - Laravel 5.5 递归函数创建菜单
- ios - 如何为 GDPR / RGPD 匿名化 iOS 版 Google Analytics(分析)
- mysql - MySQL / PostgreSQL - 这可以在事务中执行并行写入吗?
- java - 如何在 ehcache 3.5 版本中将缓存过期配置为 none 和 overflowToDisk="false"?
- google-apps-script - 如何检查电子邮件是否附有 PDF(如果存在)?如何使用 Google App Script 在 Gmail 中显示所有 PDF 附件的标签名称?
- javascript - JS 非内联版本的 console.collapsedGroup
- uwp - 在桌面应用程序中使用更新的 Windows 10 API
- generics - 没有找到类型的名为 len 的方法
::输入当前范围