好了,所以我有一个文本文件,该文本文件中有一些字符串数据,我要读的文本文件看起来像这样:vb.net的StreamReader跳出循环
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.,:[email protected]#$%^&*()_-+=[]''?<>\|"
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循环正在运行,直到文件结束。
任何帮助,将不胜感激,如果我没有任何意义,请让我知道,但我试图解释它尽可能简单。
该StreamReader的目的是什么?它正在被打开(sr2),但从未用于定界?为什么要打开同一个文件两次? –
哎呀,没有看到,谢谢。 –