vb.net streamreader跳出循环

时间:2014-02-20 08:31:20

标签: vb.net

好的,所以我有一个文本文件,文本文件中包含一些我必须阅读的字符串数据,文本文件如下所示:

start log

start day = 121010

begin detect

1     121010 05 00 21 50 3 00

2     121010 04 01 21 30 2 00

3     121010 04 01 22 40 1 01

我正在做的是使用流阅读器读取日志文件,并且我已经设置了读取每一行的条件,如果该行有任何字母或特殊字符,它会跳过它并移动到下一行,如果该行更短比我指定的长度,它也将跳过它。这是我的代码:

 If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
        Dim filename As String = OpenFileDialog1.FileName
        Dim line As String
        Dim num As Integer
        Dim disaprovedcharacters As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ.,:!@#$%^&*()_-+=[]''?<>\|"
        Using sr As New StreamReader(filename)
            While Not sr.EndOfStream
                line = sr.ReadLine
                If line.Length > 10 Then
                    If Not line.LastIndexOfAny(disaprovedcharacters.ToCharArray) <> -1 Then
                        Using sr2 As New StreamReader(filename)
                            num = line.Substring(0, 5)
                        End Using
                    End If
                End If
            End While
        End Using
    End If

这对我很有用,该行现在的值为:

1     121010 05 00 21 50 3 00

问题是我想在字符串的第一行(“开始日志,开始日等......”之后的行)中设置前5个字符(注意空格)。我这样做是通过使用:

num = line.substring(0, 5)

它显示了正确的数字。唯一的问题是,如何在找到字符串中的第一行后停止while循环。例如,while循环将一直运行,直到它到达第一行字符串,然后它就会停止运行。因为我需要的只是第一个数字,在这种情况下是“1”。但是消息框将显示“1”然后“2”,依此类推,因为while循环运行直到文件结束。

任何帮助都会受到赞赏,如果我没有任何意义,请告诉我,但我试图尽可能简单地解释它。

1 个答案:

答案 0 :(得分:3)

使用Exit While

While Not sr.EndOfStream
    line = sr.ReadLine
    If line.Length > 10 Then
        If Not line.LastIndexOfAny(disaprovedcharacters.ToCharArray) <> -1 Then
            Using sr2 As New StreamReader(filename)
                num = line.Substring(0, 5)
                Exit While
            End Using
        End If
    End If
End While

MSDN:

  

立即退出出现的While循环。执行   继续End While语句后面的语句。出口   虽然只能在While循环中使用。在嵌套中使用时   循环时,退出时将控制权转移到循环中   嵌套级别在发生Exit While的循环之上。