我有一个函数,我写了一个函数来搜索一个特定单词出现的数组。该函数接受一系列文本行和一个目标关键字,它必须搜索并返回包含目标词的ines的arraylist。例如,如果array是(每行是数组的下标):
测试.net应用程序 大棕猫 样品申请 搜索索引优化 寻找猫 大粉红色的大象
并且函数调用是FindLinesInArray(arr,“cat”),然后函数将返回并且数组列表有两行:
大棕猫 寻找猫
功能如下:
Function FindLinesInArray(ByRef arr() As String, ByVal target As String) As ArrayList
Dim idx As Integer
Dim temp As String = ""
Dim alist As ArrayList = New ArrayList()
Try
For idx = 0 To arr.Length - 1
If arr(idx).ToString().ToLower().IndexOf(target) <> -1 Then
temp = arr(idx).ToString().ToLower().Trim()
alist.Add(temp)
End If
Next
Catch ex As Exception
MsgBox(ex.Message & " - " & ex.StackTrace)
End Try
Return alist
End Function
我的问题是如何根据搜索索引的使用来优化此功能。我正在运行的程序在大型数组上多次调用此函数,我想知道是否有更好的方法来执行此操作
答案 0 :(得分:-1)
这是c#
我是从内存中做到的,所以它可能有一些语法错误
public class SearchLine
{
private HashSet<string> words;
public void ContainsWords (HashSet<string> FindWords)
{
if (words == null)
{
words = new HashSet<string>();
foreach (string s in Line.Split(" "))
{
if(!string.IsNullOrEmpty(s))
words.Add(s.Trim());
}
}
return FindWords.Overlaps(words);
}
public string Line { get; private set;
public SearchLine(string line)
{
Line = line;
}
}