[vb.net] Prüfen, ob ein Wert/Text in einem Array/Arraylist enthalten ist

Gepostet am: Mar 30, 2011 7:54:22 AM

Array

Es kommt nicht selten vor, dass man prüfen muss, ob eine Wert/Text in einem Array bereits enthalten ist, sei es um zwei Arrays miteinander zu vergleichen, oder um beispielsweise nur Werte in einen Array aufzunehmen, die noch nicht enthalten sind. Mit folgenden Code kann man das bei eindimensionalen Arrays recht leicht bewerkstelligen. [Eine Funktion für mehrdimensionale Arrays werde ich bei Gelegenheit nachreichen, sobald ich sie wieder gefunden habe]

isElementofArray

Public Function isElementofArray(ByVal searchedValue As String, ByVal myArray() As String, Optional ByVal onlyPart As Boolean = False, Optional ByVal iStart As Integer = 0, Optional ByVal iEnd As Integer = 1000) As Integer         ' Eingabe überprüfen         If iStart < 0 Then 'iStart anpassen             iStart = LBound(myArray)         End If          If iEnd > UBound(myArray) Then 'iEnd anpassen             iEnd = UBound(myArray)         End If          ' Array durchalaufen          For i As Integer = iStart To iEnd             Debug.Print("+" & myArray(i))             If onlyPart = True Then                 If myArray(i).Contains(searchedValue) Then                     Return i                 End If             Else 'onlyPart = False                  If searchedValue = myArray(i) Then                     Return i                 End If             End If         Next         ' Rückgabe, wenn nicht gefunden          Return -1End Function

Um beispielsweise die Position des Vornamens "Peter" in einem Array, der den kompletten Namen enthält zu erfahren:

> debug.print(isElementofArray("Peter", Namen, True))

Würde der Array nur die Vornamen enthalten, bräuchte man nur:

> debug.print(isElementofArray("Peter", Vornamen))

Mit den Parametern iStart und iEnd kann man bestimmen, wenn nur ein Teil des Arrays durchsucht werden soll. 

siehe auch [hier]

Arraylist

Wesentlich einfacher ist es bei einer Arraylist. In diesem Fall reicht ein ArrayL.Contains.