2010-01-28 7 views
1

Vous devez prendre une chaîne en vb et la diviser. Aussi besoin de regarder à travers les deux valeurs retournées et retourner la valeur qui contient "domain1.com". Les pipelines sont le délimiteur.Chaîne Split & Search VB.NET

txtEmailFrom.Text = "[email protected]|[email protected]" 
Dim brokened() As String 
brokened = Split(txtEmailFrom.Text, "|") 

Ne pas savoir où aller d'ici ...

+0

vous pouvez regarder cette page, il vous montre les différentes façons dont vous pouvez diviser, rechercher et analyser les chaînes dans VB.net http://msdn.microsoft.com/en-us/library/hzcd8ze0%28VS.80%29.aspx –

Répondre

0
txtEmailFrom.Text = "[email protected]|[email protected]" 
Dim brokened() As String 
dim email as string 
dim emailSplit() as string 
brokened = Split(txtEmailFrom.Text, "|") 

for email in brokened 
    emailSplit = Split(email, "|") 
    if emailSplit(1) = "domain1.com" then 
     Console.WriteLine(email) 
    end if 
next 

Je vous écris ceci sans IDE & cela pourrait être le style VB6.
Si tout va bien, il devrait vous donner une idée de la conversion en VB.net

EDIT: Ofcourse, il sera préférable d'ajouter des contrôles de limites du tableau avant cette ligne if emailSplit(1) = ....

0
Dim brokened() As String = txtEmailFrom.Text.Split("|"c) 

Dim returnValue as String 

For each item as String in brokened 
    If item.Contains("domain1.com") Then 
    returnValue = item 
    End If 
Next 
0

(je me suis interrompu par écrit ma réponse, donc je suis déterminé à finir!)

Vous pouvez essayer ceci:

Module Module1 

    Sub Main() 

     Dim email As String = "[email protected]|[email protected]" 

     Dim brokened() As String 
     brokened = Split(email, "|") 

     Dim k As List(Of String) = (From j As String In brokened _ 
            Where j.Contains("domain1.com") _ 
            Select j).ToList() 

     For Each u As String In k 
      Console.WriteLine(u) 
     Next 


    End Sub 

End Module 

J'espère que cela vous aide. Jas.

+0

en utilisant firstOrDefault will ne retourne pas un tableau ou un ienumeration – Fredou

+0

@Fredou - Votre droit, j'avais mal compris les exigences. Avoir changé le code en conséquence. –

2
For Each email In brokened 
    If email.Contains("domain1.com") Then 
     Return email 
    End If 
Next 
+1

Il ya un temps et un endroit pour LINQ et je dirais que ce n'est pas l'un d'entre eux, une bonne vieille boucle FOR comme vous avez fonctionne mieux ici et peut être plus facilement lu par tout le monde. –

0

je mettrais l'e-mail DIVISEES dans une liste et d'utiliser la méthode list.FindAll pour trouver tous domain1.com

Je vais écrire ceci dans C#, je suis plus familier avec , mais il doit être le même pour vb.net

List<string> emails = new List<string>(); 
emails.AddRange(txtEmailFrom.Text.Split("|".ToCharArray())); 

emails.FindAll(s=> {return s.Contains("domain1.com");}); 

quelque chose comme ça ... écrit subjets IDE

0
Dim test As String = "[email protected]|[email protected]" 
Dim brokend() As String 
brokend = test.Split(New String() {"|"}, StringSplitOptions.None) 

For Each email As String In brokend 
    If email.EndsWith("domain1.com") Then 
     Return email; 
    End If 
Next