Суть задачи: В текст бокс вводится строка, в ней с помощью функции подсчитывается количество слов.
Потом по количество слов должно быть такое же кол. условий.
Пример:
444 555 66 ... n- слов
Условие1 (444) и условие2 (555) и условие3(66) ... условие n-(слов)
Вот этих слов может быть много, заранее знать сколько невозможно. Соответственно условий тоже. Думал использовать Case, но тут нужно заранее знать максимальное количество слов.
Подкиньте идею как это реализовать.
Доброго времени суток.
Суть задачи: В текст бокс вводится строка, в ней с помощью функции подсчитывается количество слов.
Потом по количество слов должно быть такое же кол. условий.
Пример:
444 555 66 ... n- слов
Условие1 (444) и условие2 (555) и условие3(66) ... условие n-(слов)
Вот этих слов может быть много, заранее знать сколько невозможно. Соответственно условий тоже. Думал использовать Case, но тут нужно заранее знать максимальное количество слов.
MisterYu, Ну тут в лоб 2 способа, в принципе похожие: либо перебор по всем строкам, внутри которого перебор всех условий, если все условия выполнены, строка попадает в коллекцию (массив, или во что Вы собираете результат). либо копируете все строки в коллекцию и перебором так же по всем строкам, внутри каждой строки перебираете все условия и если хотя бы одно не выполняется - удаляете из неё неподходящую строку (тут не обязательно нужно будет перебирать все условия, если хотя бы 1 не выполняется, дальнейшие условия для данной строки не обязательно проверять). В коллекции останется нужный вам результат .
Возможно, в Вашем случае, можно будет попробовать ещё регулярные выражения... Но это не точно)
MisterYu, Ну тут в лоб 2 способа, в принципе похожие: либо перебор по всем строкам, внутри которого перебор всех условий, если все условия выполнены, строка попадает в коллекцию (массив, или во что Вы собираете результат). либо копируете все строки в коллекцию и перебором так же по всем строкам, внутри каждой строки перебираете все условия и если хотя бы одно не выполняется - удаляете из неё неподходящую строку (тут не обязательно нужно будет перебирать все условия, если хотя бы 1 не выполняется, дальнейшие условия для данной строки не обязательно проверять). В коллекции останется нужный вам результат .
Возможно, в Вашем случае, можно будет попробовать ещё регулярные выражения... Но это не точно)Roman777
Много чего не знаю!!!!
Сообщение отредактировал Roman777 - Четверг, 23.08.2018, 09:19
Результат моего шаманства: Функция для подсчета пробелов между словами [vba]
Код
Function Count_Probel(Strocka As String) As Integer Dim Count As Integer: Count = 0 Dim s As String: s = Strocka Do While InStr(1, s, " ") > 0 s = Replace(s, " ", " ") Loop Do While InStr(1, s, " ") > 0 And Len(s) > InStr(1, s, " ") s = Mid(s, InStr(1, s, " ") + 1, Len(s)) Count = Count + 1 Loop Count_Probel = Count End Function
[/vba]
Процедура сравнения: [vba]
Код
Sub Sravn(Base As String, Stroka_find As String, Proverca As Boolean) Dim Pos As String Dim i As Integer Dim s As String s = Stroka_find If Count_Probel(Stroka_find) > 0 Then For i = 1 To Count_Probel(Stroka_find) + 1 Pos = InStr(1, s, " ") If Pos > 0 Then If InStr(1, LCase(Base), LCase(Mid(s, 1, Pos - 1))) Then s = Mid(s, Pos + 1, Len(s)) Proverca = True Else Proverca = False Exit Sub End If Else If InStr(1, LCase(Base), LCase(s)) Then Proverca = True Else Proverca = False Exit Sub End If End If Next i Else If InStr(1, LCase(Base), LCase(s)) Then Proverca = True Else Proverca = False End If End If End Sub
[/vba]
Код может и не оптимизирован, но работает. Всем спасибо
Roman777, спасибо за направление.
Результат моего шаманства: Функция для подсчета пробелов между словами [vba]
Код
Function Count_Probel(Strocka As String) As Integer Dim Count As Integer: Count = 0 Dim s As String: s = Strocka Do While InStr(1, s, " ") > 0 s = Replace(s, " ", " ") Loop Do While InStr(1, s, " ") > 0 And Len(s) > InStr(1, s, " ") s = Mid(s, InStr(1, s, " ") + 1, Len(s)) Count = Count + 1 Loop Count_Probel = Count End Function
[/vba]
Процедура сравнения: [vba]
Код
Sub Sravn(Base As String, Stroka_find As String, Proverca As Boolean) Dim Pos As String Dim i As Integer Dim s As String s = Stroka_find If Count_Probel(Stroka_find) > 0 Then For i = 1 To Count_Probel(Stroka_find) + 1 Pos = InStr(1, s, " ") If Pos > 0 Then If InStr(1, LCase(Base), LCase(Mid(s, 1, Pos - 1))) Then s = Mid(s, Pos + 1, Len(s)) Proverca = True Else Proverca = False Exit Sub End If Else If InStr(1, LCase(Base), LCase(s)) Then Proverca = True Else Proverca = False Exit Sub End If End If Next i Else If InStr(1, LCase(Base), LCase(s)) Then Proverca = True Else Proverca = False End If End If End Sub
[/vba]
Код может и не оптимизирован, но работает. Всем спасибоMisterYu