我希望能够有效地在数组中搜索字符串的内容.
例:
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)
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)