Arrays vergleichen

06/10/2008 - 17:47 von Tobias Trumpfheller | Report spam
Hallo,
VWD 2008 Express Edition und WinXP SP3

Ich habe zwei Arrays, indem ich nach einem gleichen Wert in beiden Array
suche.
Die erste Liste gibt mir die Windows Gruppen aus:

Private Function GetUserGroups(ByVal User As WindowsIdentity) As String()
Dim Groups As New List(Of String)
Dim Irc As IdentityReferenceCollection =
User.Groups.Translate(GetType(NTAccount))
For Each Account As NTAccount In Irc
Groups.Add(Account.Value)
Next
Return Groups.ToArray()
End Function

Das zweite Array lese ich von einer Textdatei aus (der Inhalt sind
Lokationen wie z.B. Duisburg, Köln, Niro etc):

Public Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

Dim lokationen As ArrayList
lokationen = New ArrayList()
Dim reader As StreamReader
reader = New
StreamReader(Server.MapPath("~/App_Data/Text/groupinfo.txt"))
'TextBox2.Text = reader.ReadToEnd
lokationen.Add(reader.ReadToEnd)
reader.Close()

So, in beiden Listen gibt es einen gleichen String, den ich auffinden muss:
"Niro"

Wie kann ich beide Arrays vergleichen, um den String "Niro" im Array
lokationen und im Array groups_array zu finden?
Ich bin das mal so angegangen:

Function CompareArrays(ByRef lokationen As String(), ByRef groups_array As
String()) As String()
Dim grpp As New List(Of String)
For i As Integer = 1 To groups_array.GetUpperBound(0)
If groups_array(i) = lokationen(i) Then
For Each result In lokationen
If groups_array.ToString.Contains(i) Then
grpp.Add(i)
End If
Next
End If
Next
Return grpp.ToArray()
End Function

Um das Ergebnis zumindest einmal anzuzeigen:
TextBox1.Text = grpp

Was mache ich falsch, die Funktion CompareArrays greift nicht?

Vielen Dank.

Gruss Tobias
 

Lesen sie die antworten

#1 Harald M. Genauck
07/10/2008 - 00:28 | Warnen spam
Hallo Tobias,

...
Wie kann ich beide Arrays vergleichen, um den String "Niro" im Array
lokationen und im Array groups_array zu finden?
Ich bin das mal so angegangen:

Function CompareArrays(ByRef lokationen As String(), ByRef
groups_array As
String()) As String()
Dim grpp As New List(Of String)
For i As Integer = 1 To groups_array.GetUpperBound(0)



Der Array-Index fàngt bei 0 an, nicht bei 1.

If groups_array(i) = lokationen(i) Then
For Each result In lokationen
If groups_array.ToString.Contains(i) Then



Warum sollte das als String ausgegebene Array groups_array den
Zahlenwert von i enthalten?

Ich denke,Du meinstest wohl eher:

If groups_array.Contains(result) Then
grpp.Add(i)



grpp.Add(Result)

oder

grpp.Add(groups_array(i))

End If
Next
End If
Next
Return grpp.ToArray()
End Function

Um das Ergebnis zumindest einmal anzuzeigen:
TextBox1.Text = grpp

Was mache ich falsch, die Funktion CompareArrays greift nicht?



"Greift nicht" soll heißen, dass der in beiden Arrays enthaltene String
nicht gefunden wird?


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Herausgeber)

Ähnliche fragen