String 拆分数组并读取到特定行

String 拆分数组并读取到特定行,string,vb.net,textbox,String,Vb.net,Textbox,我有一个同事自编的时事通讯发送工具,它在发送电子邮件后将文本文件写入日志,如下所示: 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) ------ testad

我有一个同事自编的时事通讯发送工具,它在发送电子邮件后将文本文件写入日志,如下所示:

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
我考虑过类似于
line.contains(“”
),然后忽略第一行,因为它是发送者/头/文件行,一直读到
line.contains(“”
),然后再从英语开始。但我真的不知道如何把它写成代码


提前感谢

在这段代码中,我使用了RichTextBox,因此结果更容易查看。基本上,它遍历文件的每一行

如果找到包含“Sender:”的行,则根据<和>符号之间找到的国家,将RichTextBox对象设置为目的地

如果找到包含“-----”的行,则该行将添加到上次选择的目标

这将为你指明正确的方向

   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
Dim txt As String()=File.ReadAllLines(“C:\temp\log\u 01\u 2017.txt”)
RichTextBox1.Clear()
RichTextBox2.Clear()
将每个ln作为txt中的字符串
朦胧的国家
将条目设置为字符串=“”
Dim destinationTextbox作为RichTextBox
选择Case True
案例项次包含(“发件人:”)

country=Split(ln,“>”(0)。TrimStart(“对我来说它不起作用,因为
destinationTextBox
Case ln.包含(“----”)时仍然是
nothing
被调用。如何使destinationTextbox=第一个案例的结果,然后在第二个案例中使用它?可能我昨天出错了。
destinationTextbox
不是
nothing
,但是每当我试图通过添加
MsgBox(destinationTextbox.ToString())来获取当前选择的国家/地区时
它只是告诉我:
System.Windows.Forms.RichTextBox,Text:
,而不是上面if子句指定的值。我如何解决这个问题?MsgBox(destinationTextbox.ToString())只显示
destinationTextbox
的默认属性,即
.name
属性。您应该使用MsgBox(destinationTextbox.Text)犯了错误!我在if子句中使用了“Englisch”(这只是“english”的德语单词),但我的日志文件中包含了“english”。现在效果很好。非常感谢!
   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