Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Поиск: Только слово целиком Добавлено: 03.04.03 19:43  

Автор вопроса:  Chill | ICQ: 554200 

Можете подсказать алгоритм сабжа? Вообще надо для vb.net, но мне нужан именно алгоритм, т.ч. все равно.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 E-Man



Вопросов: 3
Ответов: 132
 Профиль | | #1 Добавлено: 03.04.03 20:59

Че-то я не понял... слово где? в текстбоксе? бд? ил где?

Ответить

Номер ответа: 2
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #2 Добавлено: 03.04.03 21:20

в textbox'e

Ответить

Номер ответа: 3
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #3
Добавлено: 04.04.03 13:45

Тебе нужен алгоритм, а не код?
Тогда пожалуйста:
В textboxe перебираешь все слова подряд и если первый символ искомого совпадает с первым символом слова в тексте, то перебираешь и сравниваешь по буковке.
Это конечно премитивно, но сработает.
2 вариант:
начало то же самое, ищешь по первому символу, а потом сравниваешь фрагмент текста длиной равной длине искомого текста.

Есть еще куча вариантов, нужно только фантазию привлечь к работе.
Но все это чушь.
Я думаю тебе нужен не алгоритм, а функции работы с текстом. Слишком уж широкий вопрос.

Ответить

Номер ответа: 4
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #4 Добавлено: 04.04.03 14:01

А как я буду определять, та строка которую нашлп прога является частью слова или словом? Мне нужно чтобы он тока слова находил, причем не надо учитывать знаков препинания.

Ответить

Номер ответа: 5
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #5
Добавлено: 04.04.03 14:43

Ну блин, я же говорю, В К Л Ю Ч И   Ф А Н Т А З И Ю !!!
По любому, слофо заканчивается либо пробелом, либо знаком препинания. К искомому слову прибавь пробел, и сравнивай слово в тексте с <искомым словом>+[пробел], а знаки препинания заставь вовсе игнорировать, их не так уж и много. Не помню таблицу ASCII, можно и её использовать.

На всякий случай объясню еще раз, на пальцах.
Вопрос: А как я буду определять, та строка которую нашлп прога является частью слова или словом?
Ответ: Перед словом и после слова стоит пробел (либо знак препинания). Если ты перебираешь слово по 1 символу, то наткнувшись на пробел или знак ты поймешь, что слово кончилось, это не фрагмент, это слово целиком.

Например: В поле поиска вводим слово "мир"

1. Добавляем к "мир" пробел получаем "мир_"  (знак подчеркивания - пробел)
2. В тексте натыкаемся на "мир всему миру"
3. находим слово начинающееся с буквы м
4. сравниваем по символу
   м-м, и-и, р-р, _-_    - все получилось.
5. ищем дальше, находим "миру"
6. сравниваем
   м-м, и-и, р-р, _-у - нескладушечки.
  
То же самое с фрагментом текста, равным длине искомого слова, так даже быстрее.
сравниваем, если сошлось, то проверяем символ после этого участка, если это пробел или знак, то всё "ладушки", если буква, то идем дальше.

Ответить

Номер ответа: 6
Автор ответа:
 E-Man



Вопросов: 3
Ответов: 132
 Профиль | | #6 Добавлено: 04.04.03 23:13

Пардон, я не понял опять, нафиг перебирать все слова? InStr'ом никак? Он сам найдет.

Private Sub Command1_Click()

Dim StringToFind As String

StringToFind = Text2.Text

'или " " & text2.text & " "

'чтобы найти ' abc ' - это и будет выделенное пробелами одно слово

a = InStr(1, Text1.Text, StringToFind) - 1

If a <> 0 Then Text1.SelStart = a: Text1.SelLength = Len(Text2.Text)

Text1.SetFocus

End Sub

только это надо модифнуть для знаков препинания.

Ответить

Номер ответа: 7
Автор ответа:
 Smith



ICQ: ненавижу 

Вопросов: 28
Ответов: 317
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #7
Добавлено: 05.04.03 11:51

Спрашивали об алгоритме. А может этот алгоритм хотят применить еще и в других языках?

Ну, а про VB я сразу сказал, что нужны функции работы с текстом.

Ответить

Номер ответа: 8
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #8 Добавлено: 05.04.03 12:35

>>Спрашивали об алгоритме. А может этот алгоритм хотят применить еще и в других >>языках?

>>Ну, а про VB я сразу сказал, что нужны функции работы с текстом

Ну и функции пригодятся, у тебя они есть? =)

Ответить

Номер ответа: 9
Автор ответа:
 >>> MUXzzzz <<<



ICQ: 884468 

Вопросов: 13
Ответов: 29
 Web-сайт: www.netbugs.ru
 Профиль | | #9
Добавлено: 05.04.03 14:54
нуна искать слово, алгоритм тебе уже сказали как, а для точности возле искомого нада с 2-ух сторон по пробелу влепить

Ответить

Номер ответа: 10
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #10 Добавлено: 05.04.03 20:13

>>нуна искать слово, алгоритм тебе уже сказали как, а для точности возле искомого >>нада с 2-ух сторон по пробелу влепить

Ну не совсем так, надо не только пробелы подставлять,о и знаки препинания(в конец слова); и еще надо учесть то, что слово может находиться в начале или в конце, т.е. подставлять туда уже ничего не надо =)

Ответить

Номер ответа: 11
Автор ответа:
 hedgehog



ICQ: 175571327 

Вопросов: 15
Ответов: 207
 Web-сайт: ezh.ru
 Профиль | | #11
Добавлено: 06.04.03 04:40

Все граздо проще. Поиск начинается с начала (неожиданная мысль :) искомое слово сравнивается с самым началом текста и если совпало то опаньки, а если нет то начинается веселье: ищем первый пробел от начала текста и сравниваем с тем что идет после пробела, если все еще нет, то ищем следующий пробел и так далее. Просто если должно совпадать слово целиком, то искомое должно идти сразу после пробела (если не в самом начале, естественно совпадать и сразу после должен идти небуквенный символ или кончаться текст. Правда есть еще фишка, что отдельные личности не ставят пробелов после знаков препинания, тогда слову может предшествовать не пробел, а именно этот знак. В таком случае придется перебирать символы на предмет их небуквенности, а остальное также.

Можно еще конечно извратиться и сделать как в Ворде, где хранятся коллекции слов и всего прочего. Поиск тогда поидет быстрее, но само создание и обновление коллекций... Боюсь на ВБ это будет тот еще тормоз.

Ответить

Номер ответа: 12
Автор ответа:
 E-Man



Вопросов: 3
Ответов: 132
 Профиль | | #12 Добавлено: 06.04.03 14:28

Dim TStr As String
Dim ArStr As Variant

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

Если и по этому поводу возникнут вопросы - моя злость перерастет в нечто большее...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам