Поиск в предложении...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Поиск в предложении...

Сообщение MadFire » 13.03.2010 (Сб) 20:36

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

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Поиск в предложении...

Сообщение Viper » 13.03.2010 (Сб) 20:40

Сначала выделяй из предложения отдельные слова, а затем используй поиск по маске при помощи Like.
Весь мир матрица, а мы в нем потоки байтов!

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Поиск в предложении...

Сообщение 0xy » 15.03.2010 (Пн) 0:25

ИМХО, проще сначала разбить текст на предложения, а затем
InStr(Предложение, Окончание & " ")

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 11:41

У меня предложение находится в Поле формы access.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 15.03.2010 (Пн) 12:00

MadFire писал(а):У меня предложение находится в Поле формы access.


Значит, сначала вытягиваете предложение в текстовую переменную:
Код: Выделить всё
dim strMyText as string
strMyText = Поле1.Text


Затем режете на слова
Код: Выделить всё
dim strMyTextArr() as string
strMyTextArr = split(strMyText, Chr$(vbKeySpace))


Затем ищете в словах то что надо.

Код: Выделить всё
Private Sub CommandButton1_Click()

Dim strMyText As String
Dim strMyTextArr() As String

Const strWhat As String = "ар"

strMyText = "Мама мыла раму, харе рама, харе-харе!"
strMyTextArr = Split(strMyText, Chr$(vbKeySpace))

Dim intIterator As Integer
Dim intPosition As Integer
Dim intWord As Integer

For intWord = LBound(strMyTextArr) To UBound(strMyTextArr)
    intPosition = 0
    For intIterator = 1 To Len(strMyTextArr(intWord))
        intPosition = InStr(intIterator, strMyTextArr(intWord), strWhat)
        If intPosition > 0 Then
            MsgBox "Найдено '" & strWhat & _
                   "' в слове №" & CStr(intWord) & _
                   ", в позиции №" & CStr(intPosition) & _
                   " '" & strMyTextArr(intWord) & "'"
            intIterator = intPosition
        End If
    Next
Next


Допилил код. Теперь у него нюх как у собаки, а глаз, как у орла! Оу е!
Последний раз редактировалось Денис 15.03.2010 (Пн) 13:11, всего редактировалось 7 раз(а).
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 12:19

Отлично! спс большое

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 15.03.2010 (Пн) 12:54

MadFire писал(а):Отлично! спс большое

Обратите внимание, там код доработан, с поиском нескольких вхождений в одном слове.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 13:24

А как найденное слово в конец предложения перекинуть?

strMyText = Поле1.Text Невозможно обратиться к свойству или методу элемента управления...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 15.03.2010 (Пн) 13:55

MadFire писал(а):А как найденное слово в конец предложения перекинуть?

strMyText = Поле1.Text Невозможно обратиться к свойству или методу элемента управления...


1. Ищите по форуму алгоритмы сортировки. Или используйте коллекции.
А в общем случае так:
Код: Выделить всё
1. Записать значение элемента в переменную
2. Удалить элемент из коллекции/массива
3. Добавить элемент с записанным значением

2. Ну это уже наглость, молодой человек. Давайте-ка жмите F2 в бейсике и изучайте свойства объектов.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 14:43

Денис писал(а): 2. Ну это уже наглость, молодой человек. Давайте-ка жмите F2 в бейсике и изучайте свойства объектов.


Извините,я че там сам сглупил,просто надо было фокус добавить :)

Получается лучше использовать массив? :roll:

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 15.03.2010 (Пн) 15:21

MadFire писал(а):Получается лучше использовать массив? :roll:


Тут не могу ничего посоветовать. Я очень не дружу с сортировкой как коллекций, так и массивов.
Так вам-то по сути сортировка и не нужна. Нужно перебрасывать найденные слова в конец массива.
Кстати... А зачем?

Насчет алгоритма, опять же, наверняка фигню советую, но:
Код: Выделить всё
1. Дописать в конец найденное слово (с изменениями, если таковые есть)
2. Написать по текущему индексу ключевое слово - признак удаления, например "(None)"
3. Пройтись по массиву и выписать в новый массив все элементы, кроме признаков.

Это можно сделать прямо в том коде, что я написал выше, но алгоритм, мягко говоря, не фонтан.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 17:23

Ето для переводчика....переведенное предложение надо по правилу построить.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 15.03.2010 (Пн) 18:50

MadFire писал(а):Ето для переводчика....переведенное предложение надо по правилу построить.


Жесть! Переводчик в Access? Но это у вас получится что-то с чем-то. В смысле тормоза дикие. И не только из-за VBA, но еще и из-за алгоритмов. по идее нужно строить дерево из структуры предложения на исходном языке, проводить перевод, подбирать аналогичную структуру на целевом языке, потом выстраивать дерево на целевом языке, а потом выводить его в конечное предложение.
Если ляпать всё это без анализа, будут дикие тормоза и куча нечитаемых if..else.

Желаю удачи!
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 19:09

Денис писал(а):
MadFire писал(а):Ето для переводчика....переведенное предложение надо по правилу построить.


Жесть! Переводчик в Access? Но это у вас получится что-то с чем-то. В смысле тормоза дикие. И не только из-за VBA, но еще и из-за алгоритмов. по идее нужно строить дерево из структуры предложения на исходном языке, проводить перевод, подбирать аналогичную структуру на целевом языке, потом выстраивать дерево на целевом языке, а потом выводить его в конечное предложение.
Если ляпать всё это без анализа, будут дикие тормоза и куча нечитаемых if..else.

Желаю удачи!


ничего сложного) база данных со словарем, слово-перевод,скорость не теряется) я уже сделал ее,осталось только слова с определенным окончанием перекидывать в конец предложения. А что вы можете посоветовать...у меня везде возникает проблема с unicod. поэтому выбрал бд access.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поиск в предложении...

Сообщение Хакер » 15.03.2010 (Пн) 19:35

Мухи замедленного действия любят стрелы, что тут ещё скажешь...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 20:39

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


в смысле?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поиск в предложении...

Сообщение Хакер » 15.03.2010 (Пн) 20:56

А ты поищи.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 15.03.2010 (Пн) 21:39

да хотя бы так, чем вообще никак)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Поиск в предложении...

Сообщение Хакер » 16.03.2010 (Вт) 11:10

Нет, лучше вообще никак, чем так.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 16.03.2010 (Вт) 11:28

Я как-то хотел сделать инструмент переводчика, даже бренд придумал: ManTra (Manual Translator). Но , как всегда из-за недостаточной целеустремленности и патологической лени, забросил енто дело. А вообще планировалось что-то типа моего предыдущего сообщения: лексический и синтаксический анализ предложений и вывод списка аналогов в виде деревьев с placeholder'ами под будущие слова, подбор синонимов по словарю, а пользователь уже, собирает конечный текст, как конструктор.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Поиск в предложении...

Сообщение 0xy » 16.03.2010 (Вт) 20:32

Хакер писал(а):Нет, лучше вообще никак, чем так.

+100!
Гавнопроги--фтопку!

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 16.03.2010 (Вт) 22:07

Хех....в том то и дело что у меня смысл не теряется) И вот этого "Мухи замедленного действия любят стрелы" точно не будет...кста вот на счет подбор синонимов я тоже думал....вместо того чтобы стебаться помогли бы :(

0xy
Бывалый
Бывалый
 
Сообщения: 223
Зарегистрирован: 14.06.2006 (Ср) 2:34

Re: Поиск в предложении...

Сообщение 0xy » 17.03.2010 (Ср) 9:19

Неблагодарная это затея. Лучше Гугля сделать все равно не получится... Это мягко говоря :)

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 17.03.2010 (Ср) 10:06

в гугле нет этого языка к сожалению... :)

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 17.03.2010 (Ср) 14:29

MadFire писал(а):в гугле нет этого языка к сожалению... :)

Какого именно?
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 17.03.2010 (Ср) 14:31

татарский

А что если склеить слова из strMyTextArr в нужном порядке (в цикле от 1 до кол-ва слов, проверить номер с номером найденного, если совпадает, то в результат его не пишем, иначе прибавляем в результат + пробел).

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Поиск в предложении...

Сообщение Денис » 17.03.2010 (Ср) 15:54

MadFire писал(а):А что если склеить слова из strMyTextArr в нужном порядке (в цикле от 1 до кол-ва слов, проверить номер с номером найденного, если совпадает, то в результат его не пишем, иначе прибавляем в результат + пробел).

Вот то что вы сейчас написали, это иллюстрация моей фразы выше про кучу if..else и тормоза.
Как я и написал выше, вам нужно делать анализ текста. А для того чтоб его сделать, надо RTFM по теории графов, по древовидным структурам, немного по RTFM'ить ООП.

А еще не гуглом единым жив человек
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 17.03.2010 (Ср) 17:29

Куча if else точно не будет, так как текст уже известен,всего лишь 3 листа А4

Код: Выделить всё
FOR intWord = LBOUND(strMyTextArr) TO UBOUND(strMyTextArr)
    intPosition = 0
    FOR intIterator = 1 TO LEN(strMyTextArr(intWord))
        intPosition = INSTR(intIterator, strMyTextArr(intWord), strWhat)
        IF intPosition > 0 THEN
            MsgBox "Найдено '" & strWhat & _
                   "' в слове №" & CStr(intWord) & _
                   ", в позиции №" & CStr(intPosition) & _
                   " '" & strMyTextArr(intWord) & "'"
            num_word = intWord
            intIterator = intPosition
        END IF
    NEXT
NEXT

new_str = ""
FOR intWord = LBOUND(strMyTextArr) TO UBOUND(strMyTextArr)
if intWord<>num_Word THEN new_str=new_str & strMyTextArr(intWord) & " "
NEXT
new_str = new_str & strMyTextArr(num_Word)

MadFire
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 15
Зарегистрирован: 13.03.2010 (Сб) 20:31

Re: Поиск в предложении...

Сообщение MadFire » 18.03.2010 (Чт) 18:57

осталось только чтоб знаки препинания за этим словом были,а не до него после перекидывания)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 7

    TopList