[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.