Я пытаюсь закодировать часть программного обеспечения, в которой я пытаюсь показать результаты, соответствующие критериям поиска.
У меня есть текстовое поле, в котором я могу ввести одно или несколько слов, которые я хочу найти, и список, содержащий 4 разных столбца и дюжину строк. Идея состоит в том, что каждая строка списка содержит много слов, и я хочу видеть только те строки, которые содержат все слова, которые я ввел в текстовое поле. Я закончил код, который ищет только один термин. Проблема, с которой я столкнулся, заключается в том, что я не совсем понимаю, как сделать то же самое, но использовать несколько терминов вместо одного.
В текстовом поле я пишу слова, которые хочу найти, через пробел. У меня есть переменная, в которой я сохраняю все содержимое строки списка, разделенное символом : (пример => col1row1content: col1row2content: col1row3content и т. Д.). Подводя итог, я хочу проверить, содержит ли строка (полное содержимое строки) все остальные строки (каждое слово, которое я набрал в текстовом поле).
Это реализованный мной код:
Dim textboxFullContentArray As String() = textboxSearch.Split(New Char() {" "c})
Dim Content As String
Dim containsAll As Boolean = False
Dim wholeRowContent(listviewMain.Items.Count - 1) As String ' each index of the array keeps the entire row content (one array contains all 4 cells of the row)
' wholeRowContent contains in one index the entire content of a row. That means,
' the index contains the 4 cells that represent an entire row.
' The format is like "rowData1:rowData2:rowData3:rowData4" (omitted for simplicity)
For Q As Integer = 0 To listviewMain.Items.Count - 1
For Each Content In textboxFullContentArray
If wholeRowContent(Q).ToLower.Contains(Content) Then
containsAll = True
' rest of the code...
ElseIf Not wholeRowContent(Q).ToLower.Contains(Content) Then
containsAll = False
Exit For
End If
Next
Next
Но, конечно, этот код показывает ложные срабатывания, и я думаю, что это не очень хорошее решение. Я думаю, что это должно быть намного проще, и я слишком усложняю концепцию.
Я использую VB.Net 2013