如果空行,Streamreader读取下一行

时间:2018-10-12 01:27:47

标签: vb.net

我想逐行使用streamreader readline时遇到问题。我使用的流阅读器是通过获取子字符串来实现的,但是当涉及到空行时,它会弹出此错误消息“索引和长度必须引用字符串中的位置”。它不是完全为空的行或行,而是包含“ÐôÐ#(ôd”)这个东西。如何跳过或忽略或删除文本文件中没有适当行的行?这是我的代码

erlang:system_info(wordsize)

3 个答案:

答案 0 :(得分:0)

尝试一下

 Dim line As String = reader.ReadLine
 If(String.ISNullorWhiteSpace(line) = false Then
Dim datetimestring As String = line.Substring(0, 22)
                datetimestring = datetimestring.Replace("""", "").Trim()
                datetimestring = datetimestring.Replace("-", "").Trim()


                Dim format As String = "dd/MM/yyyy hh:mm:ss tt"
                Dim time As DateTime = DateTime.Parse(datetimestring)
                Dim Dt = time.ToString(format)
                'Dim dtime As DateTime = DateTime.Parse(Dt)

                Dim c As String = line.Substring(22)
                c = c.Replace("-", "").Trim()

                Dim cmd1 As New SqlCommand("insert into table5([time] , [process], [oven], [line]) values ( @line , @line1, '" & oven & "', '" & row2 & "')", con1)
                cmd1.Parameters.Add("@line", SqlDbType.DateTime).Value = time
                cmd1.Parameters.Add("@line1", SqlDbType.NVarChar).Value = c
                con1.Open()
                cmd1.ExecuteNonQuery()
                con1.Close()
                row2 = row2 + 1
End If  

如果出现line.Substring,请检查类似这样的内容

Dim lineLength As Int = line.Length()
Dim datetimestring As String   =If(line.Substring(0, 22) = Null, "", ine.Substring(0, 22))

Dim datetimestring As String   =If(lineLength < 22, "", line.Substring(0, 22))

答案 1 :(得分:0)

我不会使用SubString函数,正如您指出的那样,当一行少于22个字符时,程序将崩溃。 通常,我将使用“拆分”功能将线细分或拆分为不同的部分,例如:

 dim ast() as string = line.split("XXX")

然后从中提取特定的字符串:

datetimestring = ast(0)

当然,这要求零件之间用通用的定界符(例如','或空格等)分隔。

此外,在读完该行之后,请添加其他条件,例如:

Dim line As String = reader.ReadLine
If String.ISNullorWhiteSpace(line) orelse line.length < 10  Then continue do

答案 2 :(得分:0)

Do Until reader.EndOfStream
Dim line As String = reader.ReadLine
If Not String.IsNullOrWhiteSpace(line) AndAlso Not line.Length < 22 Then

'put the rest of your do-loop code here

End If
Loop