【发布时间】:2017-06-30 02:08:10
【问题描述】:
在我的应用程序中,我需要读取 vb.net 中的分隔文本文件
2016/05/15 21:59:13,739 [7] 信息 - Login.User_Aut - o03dx1n 未知 - 登录:KST028
with:
Day 2016/05/15
Time 21:59:13,739
LogType [7] INFO
MethodName Login.User_Aut
SessionID o03dx1n Unknown
LoginID Login: KST028
Message
这是我目前的代码。
OpenFileDialog1.ShowDialog()
Dim filepath As String = OpenFileDialog1.FileName
Dim inputstream As New IO.StreamReader(filepath)
Dim newstr() As String
Dim Day As String
Dim Time As String
Dim LogType As String
Dim MethodName As String
Dim SessionID As String
Dim LoginID As String
Dim Message As String
Do While inputstream.Peek <> -1
newstr = inputstream.ReadLine().Split(" ")
Day = newstr(0)
Time = newstr(1)
LogType = newstr(2)
MethodName = newstr(3)
SessionID = newstr(4)
LoginID = newstr(5)
Message = newstr(6)
Me.LogListView.Items.Add(Day)
Me.LogListView.Items.Item(LogListView.Items.Count - 1).SubItems.Add(Time)
Me.LogListView.Items.Item(LogListView.Items.Count - 1).SubItems.Add(LogType)
Me.LogListView.Items.Item(LogListView.Items.Count - 1).SubItems.Add(MethodName)
Me.LogListView.Items.Item(LogListView.Items.Count - 1).SubItems.Add(SessionID)
Me.LogListView.Items.Item(LogListView.Items.Count - 1).SubItems.Add(LoginID)
Me.LogListView.Items.Item(LogListView.Items.Count - 1).SubItems.Add(Message)
Loop
inputstream.Close()
End Sub
这段代码是错误的,因为: 日期和时间正确,但 logtype、session id、loginid、message of columns 错误
【问题讨论】:
-
不应该
LogType = newstr(2)是LogType = newstr(2) & " " & newstr(3)吗?然后应该相应地调整(和连接)其他字段。 -
我当然希望它是制表符分隔符而不是空格。如果它是一个空格,那么唯一可行的方法是所有字段都具有固定宽度。我怀疑这就是你所拥有的。在这种情况下,您需要根据字符数进行阅读。
-
没有合格的开发人员会在没有限定符的情况下使用空格作为分隔符。这必须是固定宽度。
-
谢谢,但 logtype 只是固定的
-
我认为您想在连字符 ("-"c) 上拆分,您仍然需要对第一部分进行子字符串化,但这应该相对简单,因为您可以将日期子字符串化并拆分其余部分那个在冒号上