Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> алгоритм нахождения слов в тексте, есть ли такой? 
:(
    Опции темы
al1ve
Дата 15.2.2011, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



здравствуйте. подскажите пожалуйста алгоритм или программный код для поиска слова в введённом тексте, как например в Word`е для Delphi. я нашёл что-то но это кажись для СИ  и не совсем то - http://base.vingrad.ru/view/2582-Algoritm-...ih-slov-v-fayle

Это сообщение отредактировал(а) al1ve - 15.2.2011, 18:16
PM MAIL ICQ   Вверх
superVad
Дата 15.2.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



По ссылке - модуль для Делфи.

Не совсем ясна задача. Может тебе функции pos хватит?
PM MAIL   Вверх
al1ve
Дата 15.2.2011, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



напомни для чего она. в текстовом поле набран произвольный текст (не абракадабра). при нажатии кнопки "обработать" программа должна найти в набранном тексте "плохие" слова и заменить их на слово типа "<cenosored>". проще говоря - мат-фильтр =)
PM MAIL ICQ   Вверх
meteor2312
Дата 15.2.2011, 19:46 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 19.11.2010

Репутация: нет
Всего: нет



Используй pos, delete, insert.
pos - определить положение подстроки в строке (возвращает порядковый номер первой буквы подстроки),
delete - удаляет подстроку из строки,
insert - вставляет подстроку в строку.
Для подробного изучения гугл тебе в помощь  smile 
PM MAIL   Вверх
Poseidon
Дата 15.2.2011, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(meteor2312 @  15.2.2011,  19:46 Найти цитируемый пост)
Используй pos, delete, insert.
Не используй pos, delete, insert, используй StringReplace


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
al1ve
Дата 15.2.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



хорошо, попробую. спасибо за помощь)
PM MAIL ICQ   Вверх
superVad
Дата 15.2.2011, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(Poseidon @  15.2.2011,  19:17 Найти цитируемый пост)
Не используй pos, delete, insert, используй StringReplace

Или регулярные выражения.
PM MAIL   Вверх
al1ve
Дата 15.2.2011, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 20.11.2008

Репутация: нет
Всего: нет



а искать плохие слова внутри слов так же? или уже самому придётся думать? например когда вот так - кошканоссобака. как замаскировать в данном примере например слово "нос"?
PM MAIL ICQ   Вверх
Poseidon
Дата 16.2.2011, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(superVad @  15.2.2011,  20:40 Найти цитируемый пост)
Или регулярные выражения.
Регулярки для замены слов? Конкретных слов, кстати. Да ты шо..?

al1ve, ты про StringReplace читал вообще? Про тот же pos читал? Почитай, не будет таких вопросов. Текст в Дельфи (да и в других языках так же) не делится на слова. Пробел - это такой же символ как и "а". Так что функциям будет все равно, подсунешь ты им "кошканоссобака" или "кошка нос собака". "нос" найдет в любом случае. А вот если тебе нужно именно отдельно слово "нос" найти, то нужно применять хитрость и искать в тексте не "нос", а " нос " и варианты, типо " нос.", " нос," и т.д.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
MetalFan
Дата 16.2.2011, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(Poseidon @  16.2.2011,  12:56 Найти цитируемый пост)
А вот если тебе нужно именно отдельно слово "нос" найти

тогда регулярки в помощь)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
superVad
Дата 16.2.2011, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(Poseidon @  16.2.2011,  11:56 Найти цитируемый пост)
Регулярки для замены слов? Конкретных слов, кстати. Да ты шо..?

Ну различные библиотеки регулярок под делфи обычно умеют Реплейс делать (еще и сплит).
Вероятно тут они как раз пригодятся, т.к. могут быть варианты написания "плохих" слов.
PM MAIL   Вверх
Poseidon
Дата 16.2.2011, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Я обычно применяю регулярки когда нужно что-то по маске найти, "вырвать" из текста что-нибудь, подходящее по критерию, вывести текст в определенном формате. А когда нужно просто заменить одно слово на другое, то зачем усложнять проект регулярками, если есть стандартные функции?

Цитата(MetalFan @  16.2.2011,  12:58 Найти цитируемый пост)
тогда регулярки в помощь
Итить. Для "найти" pos в помощь. Для "заменить" - StringReplace. Что ж вы так эти регулярки полюбили-то?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Frees
Дата 16.2.2011, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(Poseidon @  16.2.2011,  17:13 Найти цитируемый пост)
Что ж вы так эти регулярки полюбили-то?

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


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
CodeMonkey
Дата 16.2.2011, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



l'arbre - это одно слово или два?

Это два в французском, но одно слово в английском.

Это я к тому, что граница слова - довольно сложное понятие. Даже если ограничиться только русским, то в нём также найдётся место для импортированных слов.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Poseidon
Дата 17.2.2011, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(Frees @  16.2.2011,  14:52 Найти цитируемый пост)
ведь для поиска они дают больше возможностей чем pos
Зачем мне больше возможностей, когда мне надо мат заменить на "<cenosored>"? Т.е. одно слово заменить на второе. Как с пушки по воробьям.

Цитата(CodeMonkey @  16.2.2011,  19:24 Найти цитируемый пост)
l'arbre - это одно слово или два?
А какая разница? Если нам надо его заменить полностью, то и сбиваем его в StringReplace полностью. Если частично, то вбиваем часть. И, по сути, нам по барабану одно тут слово или два. Мы работает с текстовой строкой, а не со словами и предложениями. 

Регулярки нужны когда надо действительно сложные операции с текстом сделать. А когда простая замена одного слова на другое... Вы пиво открыть тоже МЧС вызываете со спец. оборудованием или все же открывалкой пользуетесь?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0888 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.