具有Outlook邮件附件列表中文件名值的数组的VB.NET比较仅在发生更多情况时匹配一次

问题描述

我正在编写一个Outlook Email VB.NET程序,该程序应解析电子邮件,将其放入用于修改各个字段的表单中,然后将邮件和所有修改后的附件保存到文件系统上的目录中。

我需要从包含附件的多行文本框中将值读取到数组中。然后,将它们与Microsoft.Office.Interop.outlook.application.MailItem.Attachment.FileName值中完整文件名列表中的值进行比较。 每个文件名只能匹配一次。只有文本框中的第一个值可以匹配。值是什么无关紧要,只要它在Microsoft.Office.Interop.outlook.application.MailItem.Attachment.FileName值中,它就与之匹配而已。

除了我要发布的代码之外,我还尝试了其他方法(例如“ contains”和“ is”)来代替比较,但是除了“ Is”之外,没有任何变化即使是第一次也不匹配。即使其他方法仍然产生相同的结果,该代码也经过了许多修改

以下是相关代码

    ' Dim mailAttachments As Outlook.Attachments = Mail.Attachments
    ListBoxAttachmentArray = SaveAttachment_List.Split(Environment.NewLine)
    If ListBoxAttachmentArray.Length > 0 Then
        For i As Integer = 0 To ListBoxAttachmentArray.Length - 2
            StatusBox.Text += Environment.NewLine & "A:" & ListBoxAttachmentArray(i)
            For j As Integer = 1 To mailAttachments.Count
                ' currentAttachment = mailAttachments.Item(j)
                StatusBox.Text += Environment.NewLine + ListBoxAttachmentArray(i)
                StatusBox.Text += " : " & mailAttachments.Item(j).FileName
                StatusBox.Text += Environment.NewLine + " i: " + i.ToString + " j: " + j.ToString
                If mailAttachments.Item(j).FileName = ListBoxAttachmentArray(i) Then
                    StatusBox.Text += Environment.NewLine & "MadeIt: " & mailAttachments.Item(j).FileName
                    'mailAttachments.Item(j).Save(UsedDir & mailAttachments.Item(j).FileName,True)
                End If
            Next
        Next
    End If

这是我的文本框中的三个文件的列表,例如:

image001.jpg
Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx
BEV-15046A62-A_REV_17.zip

这是我用来跟踪上述代码的状态文本框:

A:image001.jpg
image001.jpg : image001.jpg
 i: 0 j: 1
MadeIt: image001.jpg
image001.jpg : Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx
 i: 0 j: 2
image001.jpg : BEV-15046A62-A_REV_17.zip
 i: 0 j: 3
A: Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx
Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx : image001.jpg
 i: 1 j: 1
Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx : Mold RFQ 07162020 IP DriverAccent - Chinstrap.xlsx
 i: 1 j: 2
Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx : BEV-15046A62-A_REV_17.zip
 i: 1 j: 3
A: BEV-15046A62-A_REV_17.zip
BEV-15046A62-A_REV_17.zip : image001.jpg
 i: 2 j: 1
BEV-15046A62-A_REV_17.zip : Mold RFQ 07162020 IP Driver Accent - Chinstrap.xlsx
i: 2 j: 2
BEV-15046A62-A_REV_17.zip : BEV-15046A62-A_REV_17.zip
 i: 2 j: 3

输出中注意“ Made it”。这应该发生3次,但只有在第一次循环匹配时才发生。

我该如何每次都匹配?

解决方法

在比较字符串值之前,应先修剪字符串值以获得准确的结果。

If mailAttachments.Item(j).FileName.Trim() = ListBoxAttachmentArray(i).Trim() Then
    StatusBox.Text += Environment.NewLine & "MadeIt: " & mailAttachments.Item(j).FileName
   'mailAttachments.Item(j).Save(UsedDir & mailAttachments.Item(j).FileName,True)
End If