Тебе нужен алгоритм, а не код? Тогда пожалуйста: В textboxe перебираешь все слова подряд и если первый символ искомого совпадает с первым символом слова в тексте, то перебираешь и сравниваешь по буковке. Это конечно премитивно, но сработает. 2 вариант: начало то же самое, ищешь по первому символу, а потом сравниваешь фрагмент текста длиной равной длине искомого текста.
Есть еще куча вариантов, нужно только фантазию привлечь к работе. Но все это чушь. Я думаю тебе нужен не алгоритм, а функции работы с текстом. Слишком уж широкий вопрос.
А как я буду определять, та строка которую нашлп прога является частью слова или словом? Мне нужно чтобы он тока слова находил, причем не надо учитывать знаков препинания.
Ну блин, я же говорю, В К Л Ю Ч И Ф А Н Т А З ИЮ !!! По любому, слофо заканчивается либо пробелом, либо знаком препинания. К искомому слову прибавь пробел, и сравнивай слово в тексте с <искомым словом>+[пробел], а знаки препинания заставь вовсе игнорировать, их не так уж и много. Не помню таблицу ASCII, можно и её использовать.
На всякий случай объясню еще раз, на пальцах. Вопрос: А как я буду определять, та строка которую нашлп прога является частью слова или словом? Ответ: Перед словом и после слова стоит пробел (либо знак препинания). Если ты перебираешь слово по 1 символу, то наткнувшись на пробел или знак ты поймешь, что слово кончилось, это не фрагмент, это слово целиком.
Например: В поле поиска вводим слово "мир"
1. Добавляем к "мир" пробел получаем "мир_" (знак подчеркивания - пробел) 2. В тексте натыкаемся на "мир всему миру" 3. находим слово начинающееся с буквы м 4. сравниваем по символу м-м, и-и, р-р, _-_ - все получилось. 5. ищем дальше, находим "миру" 6. сравниваем м-м, и-и, р-р, _-у - нескладушечки.
То же самое с фрагментом текста, равным длине искомого слова, так даже быстрее. сравниваем, если сошлось, то проверяем символ после этого участка, если это пробел или знак, то всё "ладушки", если буква, то идем дальше.
>>нуна искать слово, алгоритм тебе уже сказали как, а для точности возле искомого >>нада с 2-ух сторон по пробелу влепить
Ну не совсем так, надо не только пробелы подставлять,о и знаки препинания(в конец слова); и еще надо учесть то, что слово может находиться в начале или в конце, т.е. подставлять туда уже ничего не надо
Все граздо проще. Поиск начинается с начала (неожиданная мысль искомое слово сравнивается с самым началом текста и если совпало то опаньки, а если нет то начинается веселье: ищем первый пробел от начала текста и сравниваем с тем что идет после пробела, если все еще нет, то ищем следующий пробел и так далее. Просто если должно совпадать слово целиком, то искомое должно идти сразу после пробела (если не в самом начале, естественно совпадать и сразу после должен идти небуквенный символ или кончаться текст. Правда есть еще фишка, что отдельные личности не ставят пробелов после знаков препинания, тогда слову может предшествовать не пробел, а именно этот знак. В таком случае придется перебирать символы на предмет их небуквенности, а остальное также.
Можно еще конечно извратиться и сделать как в Ворде, где хранятся коллекции слов и всего прочего. Поиск тогда поидет быстрее, но само создание и обновление коллекций... Боюсь на ВБ это будет тот еще тормоз.
Private Sub Command1_Click() ts = Split(Text1, vbCrLf) For i = 0 To UBound(ts) TStr = TStr & " " & ts(i) Next i
For i = 1 To Len(TStr) For J = 0 To UBound(ArStr) If Mid$(TStr, i, 1) = ArStr(J) Then TStr = Left(TStr, i - 1) & Mid$(TStr, i + 1) End If Next J Next i TStr = LCase(TStr) Text3 = TStr Dim SArray As Variant SArray = Split(TStr, " ") For i = 0 To UBound(SArray) If SArray(i) = Text2 Then MsgBox "Here it is...." Next i End Sub
Private Sub Form_Load() ArStr = Array(",", ".", "-", ";", ":", "(", ")", "?", "!") s = "some text, abc, with - ну типа со знаками! препинания? или: как вообще-то там надо..." Text1 = s Text2 = "типа" End Sub
Если и по этому поводу возникнут вопросы - моя злость перерастет в нечто большее...