2012-10-01 6 views
1

나는 whith 이메일 주소를 얻고, ";" 이는이 같이 :어떻게 문자열을 분할하고 VB에서 루프에서 사용할 수 있습니까?

[email protected]을 ;;; [email protected], [email protected], [email protected]을, [email protected]을;

나는 이러한 이메일은 여기에 샘플을 adresses에 한 사람에게 약속을 보낼 : 그는 메일을 전송 becuase

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("[email protected]") // HERE ARE THE Attendees 
      appointment.Save(EWS.SendInvitationsMode.SendToAllAndSaveCopy) 

는 내가 첫 번째 exept 모든 이메일 adresses이 필요합니다. 어떻게 할 수 있습니까? 당신의 도움이

+0

나는 아직 아무것도 검색하지 않았습니다. –

+0

비어있는 것들로 무엇을합니까? 그들을 건너 뛸까요? – Pacane

+0

예 가능한 경우 –

답변

6

당신이 실제로 문자열 배열로 문자열을 분할 할 방법은 다음과 같습니다

Dim emails As String() = emailString.Split({";"}, StringSplitOptions.RemoveEmptyEntries) 

이 오버로드 "분할"방법의 다른 버전이 있지만, 특정 일 당신이 StringSplitOptions를 전달할 수 있습니다 값으로, 빈 항목을 즉시 제외 할 수 있습니다.

문자열 배열을 가져온 후에는 여러 가지 방법으로 첫 번째 루프를 반복하고 생략 할 수 있습니다.

우리는 루프를 사용하고 완전히 첫 번째 항목을 건너 뛸 수 :

' 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 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) 

나 ' d하지만 그걸 가지고 놀고, 가장 적합한 방법을 사용하십시오.

+0

감사하지만 첫 줄에 오류가 있습니다. 그것은 "표현식이 예상됩니다"라고 말합니다 –

+1

"emailString"이 정의되지 않았기 때문에 그렇습니까? 그것은 당신의 이메일 문자열을위한 변수의 예일뿐입니다. – valverij

1

당신은 각 이메일을 구문 분석하고 공백을 제거하고 첫 번째 항목을 건너 뛰기 Linq에 사용하도록 분할 기능을 사용할 수 있습니다 사전에

감사합니다. 이 구문은 VB에서 작동한다고 생각합니다. 여기

Dim emailString = "[email protected];;;[email protected];[email protected];[email protected];[email protected];;" 

Dim emaillist = (From email In emailString.Split(";").Skip(1) Where email.Length > 0 Select email).ToArray() 
+4

'.Split'을 호출 할 때'StringSplitOptions.RemoveEmptyEntries'를 사용하면'where' 절이 필요 없습니다. –