如何拆分字符串并在VB中的循环中使用它们?

时间:2012-10-01 12:37:36

标签: vb.net string loops exchangewebservices string-split

我收到一封电子邮件地址,由“;”分隔看起来像这样:

  

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)

我需要每个电子邮件地址第一个,因为他发送邮件。 我怎样才能做到这一点?

提前感谢您的帮助

2 个答案:

答案 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()