我收到一封电子邮件地址,由“;”分隔看起来像这样:
geve@krag.de ;;; Tobias@nxs.de; Wissel@weg.de; Sand@nex.de; Claudia@bea.de ;;
我想在这里向这些电子邮件地址预约一个人的样本:
Dim appointment As New EWS.Appointment(esb)
appointment.Subject = "Einladung zu einem Termin"
appointment.Body = txtThema.Text
appointment.Start = Von
appointment.End = Bis
appointment.Location = "Raum 202 Kleinostheim"
appointment.RequiredAttendees.Add("geve@krag.de") // HERE ARE THE Attendees
appointment.Save(EWS.SendInvitationsMode.SendToAllAndSaveCopy)
我需要每个电子邮件地址第一个,因为他发送邮件。 我怎样才能做到这一点?
提前感谢您的帮助
答案 0 :(得分:6)
以下是将字符串实际拆分为字符串数组的方法:
Dim emails As String() = emailString.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
还有其他版本的重载“Split”方法,但是特定的方法允许您传入StringSplitOptions值,允许您立即排除空白条目。
拥有字符串数组后,您可以通过几种不同的方式遍历并省略第一个。
我们可以使用For循环并完全跳过第一个条目:
' Regular For loop approach
Dim emails As String() = emailString.Split({";"}, StringSplitOptions.RemoveEmptyEntries)
Dim appointment As New EWS.Appointment(esb)
With appointment
.Subject = "Einladung zu einem Termin"
.Body = txtThema.Text
.Start = Von
.End = Bis
.Location = "Raum 202 Kleinostheim"
End With
' start at i = 1 to skip index 0
For i = 1 To emails.Length - 1
appointment.RequiredAttendees.Add(emails(i)) ' HERE ARE THE Attendees
Next
appointment.Save(EWS.SendInvitationsMode.SendToAllAndSaveCopy)
或识别发件人的电子邮件,并使用For Each和If省略它:
' For Each approach
' set up string array and appointment object like above
Dim sender As String = emails.FirstOrDefault()
' ignore all instances of the sender's address
For Each address In emails
If address.ToLower <> sender.ToLower Then
appointment.RequiredAttendees.Add(emails(i)) ' HERE ARE THE Attendees
End If
Next
appointment.Save(EWS.SendInvitationsMode.SendToAllAndSaveCopy)
我会说玩它,并使用最适合你的方法。
答案 1 :(得分:1)
您可以使用拆分功能解析每封电子邮件,并使用Linq删除空白并跳过第一个条目。我认为这种语法适用于VB。
Dim emailString = "geve@krag.de;;;Tobias@nxs.de;Wissel@weg.de;Sand@nex.de;Claudia@bea.de;;"
Dim emaillist = (From email In emailString.Split(";").Skip(1) Where email.Length > 0 Select email).ToArray()