IndexOf
ищет точное совпадение. Чтобы настроить критерии соответствия, вы можете использовать FindIndex
метод:
// Finds first element of the array that contains `inputString`
Array.FindIndex(arr, Function(s) s.Contains(inputString))
// Finds first element of the array that begins with `inputString`
Array.FindIndex(arr, Function(s) s.StartsWith(inputString))
Edit для уточнения Function(s)
и лямбды:
Array.FindIndex
принимает два аргумента, первый из которых является массивом вы хотите работать , последний - Delegate
, представляющий предикат для проверки.
FindIndex
не имеет никакого представления о том, какой элемент вы хотите. Это дает вам возможность указать его. Вы рассказываете об этом, передавая функцию, которая принимает элемент массива и возвращает логическое значение, указывающее, хотите вы этого или нет. Он по сути вызывает эту функцию с каждым элементом массива и возвращает индекс первого элемента, для которого эта функция возвращает true.
Вместо того чтобы писать целую функцию и передавать ее с использованием AddressOf MyPredicate
, мы можем легко использовать Function(s) s.Contains(inputString)
. Это эквивалентно:
Function MyPredicate(s As String) As Boolean
Return s.Contains(inputString)
End Function
Array.FindIndex(arr, AddressOf MyPredicate)
Конечно, если бы мы сделали это, мы должны были хранить inputString
где-то доступным для этого способом. Много грязного кода. Выражение лямбда уменьшает все эти неприятности.
Edit 2:
я могу проверить этот код печатает "1":
Module Module1
Sub Main()
Dim arr() As String = {"ravi", "somu", "arul"}
Console.WriteLine(Array.FindIndex(arr, Function(s) s.Contains("so")))
End Sub
End Module
хаи, что эта функция (s). – somu
Функция (ы) объявляет лямбда (встроенная функция). Essentialy 'Function (s) s.Contains (inputString)' означает функцию, которая получает 's' и возвращает' s.Contains (inputString) '. Вместо того, чтобы загромождать код и объявлять большую функцию, вы просто пишете его inline и передаете его методу. –
ОК, я понял. но я передаю «так», что функция возвращает 0 Я хочу 1, потому что somu включить «Так» хорошо. Спасибо вам – somu