我希望能够有效地在数组中搜索字符串的内容.
例:
dim arr() as string={"ravi","Kumar","Ravi","Ramesh"}
我传递的值是"ra",我希望它返回索引2和3.
我怎么能在VB.NET中做到这一点?
目前还不清楚你想要如何搜索数组.以下是一些替代方案:
查找包含确切字符串"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"))
查找包含任何案例版本"ra"的所有项目(返回项目0,2和3):
Dim result As String() = Array.FindAll(arr, Function(s) s.ToLower().Contains("ra"))
查找以"ra"的任何案例版本开头的所有项目(retuns items 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)