Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.09.2009, 16:15   #1
lekom
Новичок
Джуниор
 
Регистрация: 27.09.2009
Сообщений: 3
По умолчанию замена слов

Здравствуйте, мне необходимо сделать прогу в которой слова будут заменяться на синонимы, то есть есть два файла .txt, в одном текст о чем нибудь, во втором база синонимов следующего вида:
авто|машина|автомобиль
доска|жердь|дерево
и т.д.

Прога будет подгружать два этих файла и по нажатию кнопки заменять слова на синонимы, как сделать так, чтобы если в тексте попалось, например, слово "автомобиль" прога заменяла рандоумом на слово "авто" или "машина"? ну и про другие слова аналогично (то есть если в тексте встретилось 1-е слово из списка синонимов, то надо поставить 2-е или 3-е, если попалось 2-е слово, то надо заменить на 1 или 3 и т.д.),

Заранее всем спасибо
lekom вне форума Ответить с цитированием
Старый 27.09.2009, 17:12   #2
andreibtzt
Заблокирован
 
Регистрация: 04.04.2009
Сообщений: 43
По умолчанию

не очень сложно, зделаи алгоритм для поик ' ' и когда нашол ' ' то копирует слово, ну например

Код:
procedure TForm1.dispose;
const stroka='привет как дела';
var
i:integer;
s:string;
begin
 for i:=0 to length(stroka) do
 if pos(' ',stroka)<>0 then
 begin
   s:=Copy(stroka,1,Pos(' ', stroka));
  ShowMessage(s);
 end;
end;
andreibtzt вне форума Ответить с цитированием
Старый 27.09.2009, 17:48   #3
lekom
Новичок
Джуниор
 
Регистрация: 27.09.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от andreibtzt Посмотреть сообщение
не очень сложно, зделаи алгоритм для поик ' ' и когда нашол ' ' то копирует слово, ну например

Код:
procedure TForm1.dispose;
const stroka='привет как дела';
var
i:integer;
s:string;
begin
 for i:=0 to length(stroka) do
 if pos(' ',stroka)<>0 then
 begin
   s:=Copy(stroka,1,Pos(' ', stroka));
  ShowMessage(s);
 end;
end;
А можно поподробнее не сказать, что я начальный уровень пользователя Delphi, но до среднего тоже далеко))

вот меня как раз и интересует как выделить в тексте слово, сравнить его со словом в базе и взять с базы синоним?
lekom вне форума Ответить с цитированием
Старый 27.09.2009, 18:04   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

посмотри еще в сторону:
первая , вторая и третья
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 27.09.2009, 18:29   #5
lekom
Новичок
Джуниор
 
Регистрация: 27.09.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Yurk@ Посмотреть сообщение
посмотри еще в сторону:
первая , вторая и третья
Вот это пример конечно интересный:

var
before, after : string;

begin
// Попытка заменить все вхождения A на THE
before := 'This is a way to live A big life';

after := StringReplace(before, ' a ', ' THE ',
[rfReplaceAll, rfIgnoreCase]);
ShowMessage('Before = '+before);
ShowMessage('After = '+after);
end;


НО, ведь у меня будет большое количество слов, поэтому надо, чтобы прога сама находила слова и заменяла их на синонимы, если они есть в базу, то есть надо доработать строчку:

after := StringReplace(before, ' слово ', ' синоним ',
[rfReplaceAll, rfIgnoreCase]);

я так и не догнал как выделить из текста слово и сравнить его с синонимом...
lekom вне форума Ответить с цитированием
Старый 27.09.2009, 19:02   #6
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Допустим у тебя есть
qW - массив слов (qN - количество слов)
qS - массив синонимов (их кол-во, соответственно, равно qN)

Тогда получаем
Код:
for i:=1 to qN do
 before:= StringReplace(before, qW, qS,
[rfReplaceAll, rfIgnoreCase]);
TwiX вне форума Ответить с цитированием
Старый 27.09.2009, 19:22   #7
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

lekom
Если сделаешь, выложи исходник. Мне тоже подобное сейчас надо.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 27.09.2009, 23:46   #8
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

2apromix, тут что-то не работает?:
Код:
for i:=1 to qN do
 before:= StringReplace(before, qW, qS,
[rfReplaceAll, rfIgnoreCase]);
TwiX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Поиск и замена слов внутри текстовых файлов. Acceptor Общие вопросы по Java, Java SE, Kotlin 2 29.05.2009 21:44
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Текстовые файлы, преобразование строки(замена слов)) lusuj Помощь студентам 1 01.12.2008 16:58