Nie jest do końca jasne, w jaki sposób chcesz przeszukać tablicę. Oto kilka alternatyw:
Znajdź wszystkie przedmioty zawierające dokładnie ciąg „Ra” (zwraca pkt 2 i 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.Contains("Ra"))
znaleźć wszystkie elementy zaczynające się dokładnie ciąg „Ra” (zwraca pozycje 2 i 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.StartsWith("Ra"))
Znajdź wszystkie przedmioty zawierające każdym przypadku wersji "ra" (zwraca pozycje 0, 2 i 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().Contains("ra"))
Znajdź wszystkie przedmioty zaczynające każdym przypadku wersji "ra" (retuns pozycji 0, 2 i 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().StartsWith("ra"))
-
Jeśli nie używasz VB 9+ wtedy nie masz anonimowy funkcje, więc musisz utworzyć nazwaną funkcję.
Przykład:
Function ContainsRa(s As String) As Boolean
Return s.Contains("Ra")
End Function
Zastosowanie:
Dim result As String() = Array.FindAll(arr, ContainsRa)
posiadające funkcję, że tylko można porównać do konkretnego napisu nie zawsze jest to bardzo przydatne, tak, aby móc określić ciąg do porównania abyś musiał umieścić go w klasie, aby mieć gdzieś przechowywać ciąg:
Public Class ArrayComparer
Private _compareTo As String
Public Sub New(compareTo As String)
_compareTo = compareTo
End Sub
Function Contains(s As String) As Boolean
Return s.Contains(_compareTo)
End Function
Function StartsWith(s As String) As Boolean
Return s.StartsWith(_compareTo)
End Function
End Class
Zastosowanie:
Dim result As String() = Array.FindAll(arr, New ArrayComparer("Ra").Contains)
Nie powinieneś dostać 0,2,3? Wyraźnie robisz filtr niewrażliwy na wielkość liter. – belgariontheking
Przekazanie w "ra" dałoby ci 0, 2 i 3. –
Spraw, aby twoje pytanie było bardziej zrozumiałe, a co ważniejsze? – Shimmy