我有一个来自同事的自编的简报发送工具,它在发送这样的电子邮件之后将文本文件写为日志:
Count of emails to send: 10
Count of sent emails: 10
<German> Sender: infotest@test.de Header: New Newsletter 01/2017, file: C:\temp\raw_newsletter_htm_german.htm
1. (30.01.2017 10:28:45) ------ testadress1@test.de
4. (30.01.2017 10:28:46) ------ testadress2@test.de
5. (30.01.2017 10:28:47) ------ testadress3@test.de
9. (30.01.2017 10:28:47) ------ testadress4@test.de
10. (30.01.2017 10:28:47) ------ testadress5@test.de
<English> Sender: infotest@test.de Header: New Newsletter 01/2017, file: C:\temp\raw_newsletter_htm_english.htm
2. (30.01.2017 10:28:46) ------ testadress6@test.de
3. (30.01.2017 10:28:46) ------ testadress7@test.de
6. (30.01.2017 10:28:47) ------ testadress8@test.de
7. (30.01.2017 10:28:47) ------ testadress9@test.de
8. (30.01.2017 10:28:47) ------ testadress10@test.de
现在我的问题:如何按语言拆分日志并将其写入2个不同的文本框?我尝试了以下内容,只检查该行是否包含“------”,因为这些是我需要的唯一行。但我不知道,我怎么能用语言来分割它们。
Private Sub readlog_Click(sender As Object, e As EventArgs) Handles readlog.Click
Dim text As String() = File.ReadAllLines("C:\temp\log_01_2017.txt")
TextBox1.Text = ""
Dim entries As String = ""
For Each line In text
If line.Contains("------") Then
entries += vbNewLine & line
End If
Next
TextBox1.Text = entries
End Sub
我考虑过类似line.contains("<German>")
的内容,然后忽略第一行,因为它是发送者/标题/文件行,读到line.contains("<English>")
然后再用英语重新开始。但我不知道如何将其写为代码。
提前致谢
答案 0 :(得分:1)
在这段代码中,我使用了RichTextBoxes,因此结果更容易看到。基本上它遍历文件的每一行。
如果找到包含“Sender:”的行,则它将RichTextBox对象设置为目标,具体取决于在&lt;之间找到的国家/地区。和&gt;符号。
如果找到包含“------”的行,则该行将添加到上次选择的目的地。
这应该指向正确的方向
Dim txt As String() = File.ReadAllLines("C:\temp\log_01_2017.txt")
RichTextBox1.Clear()
RichTextBox2.Clear()
For Each ln As String In txt
Dim country As String
Dim entries As String = ""
Dim destinationTextbox As RichTextBox
Select Case True
Case ln.Contains("Sender:")
country = Split(ln, ">")(0).TrimStart("<")
If country = "German" Then
destinationTextbox = RichTextBox1
ElseIf country = "English" Then
destinationTextbox = RichTextBox2
End If
Case ln.Contains("------")
destinationTextbox.Text = destinationTextbox.Text & ln & vbCrLf
End Select