【问题标题】:How can i split a String and use them in a Loop in VB?如何在 VB 中拆分字符串并在循环中使用它们?
【发布时间】:2012-09-22 07:27:25
【问题描述】:

我得到一个带有电子邮件地址的字符串,用“;”分隔看起来像这样:

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)

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

提前感谢您的帮助

【问题讨论】:

  • 我什么都没试过,我还在搜索中
  • 空的怎么办?跳过它们?

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


【解决方案1】:

以下是实际将字符串拆分为字符串数组的方法:

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)

不过,我会说尝试一下,并使用最适合您的方法。

【讨论】:

  • 谢谢,但第一行有错误。它说“预期表达”
  • 是因为没有定义“emailString”吗?它只是作为您的电子邮件字符串的示例变量。
【解决方案2】:

您可以使用 split 函数解析出每封电子邮件,并使用 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()

【讨论】:

  • 如果您在调用.Split 时使用StringSplitOptions.RemoveEmptyEntries,则不需要where 子句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2020-07-06
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多