如何在VB.NET中搜索数组?

som*_*omu 8 vb.net arrays

我希望能够有效地在数组中搜索字符串的内容.
例:

dim arr() as string={"ravi","Kumar","Ravi","Ramesh"}
Run Code Online (Sandbox Code Playgroud)

我传递的值是"ra",我希望它返回索引2和3.

我怎么能在VB.NET中做到这一点?

Guf*_*ffa 16

目前还不清楚你想要如何搜索数组.以下是一些替代方案:

查找包含确切字符串"Ra"的所有项目(返回项目2和3):

Dim result As String() = Array.FindAll(arr, Function(s) s.Contains("Ra"))
Run Code Online (Sandbox Code Playgroud)

查找以精确字符串"Ra"开头的所有项目(返回项目2和3):

Dim result As String() = Array.FindAll(arr, Function(s) s.StartsWith("Ra"))
Run Code Online (Sandbox Code Playgroud)

查找包含任何案例版本"ra"的所有项目(返回项目0,2和3):

Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().Contains("ra"))
Run Code Online (Sandbox Code Playgroud)

查找以"ra"的任何案例版本开头的所有项目(retuns items 0,2和3):

Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().StartsWith("ra"))
Run Code Online (Sandbox Code Playgroud)

-

如果您没有使用VB 9+,那么您没有匿名函数,因此您必须创建一个命名函数.

例:

Function ContainsRa(s As String) As Boolean
   Return s.Contains("Ra")
End Function
Run Code Online (Sandbox Code Playgroud)

用法:

Dim result As String() = Array.FindAll(arr, ContainsRa)
Run Code Online (Sandbox Code Playgroud)

拥有一个只能与特定字符串进行比较的函数并不总是非常有用,因此为了能够指定要比较的字符串,您必须将它放在一个类中以存储字符串:

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
Run Code Online (Sandbox Code Playgroud)

用法:

Dim result As String() = Array.FindAll(arr, New ArrayComparer("Ra").Contains)
Run Code Online (Sandbox Code Playgroud)


Meh*_*ari 3

Dim inputString As String = "ra"
Enumerable.Range(0, arr.Length).Where(Function(x) arr(x).ToLower().Contains(inputString.ToLower()))
Run Code Online (Sandbox Code Playgroud)