Непонятно, как вы хотите искать массив. Вот некоторые варианты:
Найти все элементы, содержащие точную строку «Ra» (возвращает пункты 2 и 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.Contains("Ra"))
Найти все элементы, начиная с точной строкой «Ra» (возвращает пункты 2 и 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.StartsWith("Ra"))
Найти все элементы, содержащие любой случай версии "ра" (возвращает элементы 0, 2 и 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().Contains("ra"))
Найти все элементы, начиная с любым случаем версией «ра» (Retuns пунктов 0, 2 и 3):
Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().StartsWith("ra"))
-
Если вы не используете VB 9+, то вы не имеете анонимных функции, поэтому вам нужно создать именованную функцию.
Пример:
Function ContainsRa(s As String) As Boolean
Return s.Contains("Ra")
End Function
Использование:
Dim result As String() = Array.FindAll(arr, ContainsRa)
Имея функцию, которая только может сравнить с определенной строки не всегда очень полезно, так, чтобы иметь возможность указать строку для сравнения вам придется поставить его в класс, чтобы где-то хранить строку:
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
Использование:
Dim result As String() = Array.FindAll(arr, New ArrayComparer("Ra").Contains)
Разве вы не получаете 0,2,3? Вы явно делаете фильтр, нечувствительный к регистру. – belgariontheking
Пройдя в «ra», вы получите 0, 2 и 3. –
Сделайте свой вопрос более четким и чувствительным к регистру. – Shimmy