好的,所以我有一个文本文件,文本文件中包含一些我必须阅读的字符串数据,文本文件如下所示:
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循环运行直到文件结束。
任何帮助都会受到赞赏,如果我没有任何意义,请告诉我,但我试图尽可能简单地解释它。
答案 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的循环之上。