|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.11.2007, 00:53 | #1 |
Новичок
Джуниор
Регистрация: 01.11.2007
Сообщений: 2
|
Вопрос по организации поиска и расстановки меток
Здравствуйте. Суть дела такова. Есть два файла (txt). В одном содержится большой массив текста (книга), в другом база сочетаний, которые необходимо найти и выделить прямо в этом же тексте. Вопрос в следующем: как организовать поиск сочетаний внутри строк первого файла с последующей подстановкой некоей метки (например, символа)? Причем порядок слов в сочетаниях может меняться, то есть сочетания видимо тоже надо разбить по словам.
ЗЫ: Сам программингом занялся впервые буквально на днях, поэтому очень многого не знаю. Заранее спасибо. ЗЗЫ: Прошу прощения, если тему кинул не в тот раздел. Последний раз редактировалось Melifaro; 01.11.2007 в 00:59. |
01.11.2007, 01:40 | #2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
Имеется в наличии функция
Pos(подстрока, строка) которая возвращает позицию подстроки в анализируемой строке, если она там есть, или ноль. На основе этой функции вполне спокойно можно решить вашу проблему. Несколько осложняет изменение порядка слов в субстроке, но и это можно обойти, вы сами верно предложили разбивку. |
01.11.2007, 08:14 | #3 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Здесь даже быстрее posex позволяющая искать вхождение начиная с указанного символа
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
01.11.2007, 09:00 | #4 |
Новичок
Джуниор
Регистрация: 01.11.2007
Сообщений: 2
|
Спасибо большое за советы. Если возникнут еще вопросы (а я думаю, они возникнут) то обращусь вновь)
|
01.11.2007, 09:53 | #5 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Вот у меня есть примерчик:
В Мемо вводятся фразы, а в РичЕдите текст, в котором эти фразы ищутся по релевантности, и выделаяются. Порядок слов в фразе может быть любой, только слова должны стоять друг за дружкой. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Memo1: TMemo; RichEdit1: TRichEdit; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var ts:TStringList; Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var j,k,e,t,l, lpr:integer; rs,s:string; begin for k:=0 to Memo1.Lines.Count-1 do begin ts.Clear; ts.DelimitedText:=Memo1.Lines[k];lpr:=0; //*********************************** *********************************** **** //********* FOR ****************** for j :=0 to RichEdit1.Lines.Count-1 do begin rs:=RichEdit1.Lines[j]; for e:=1 to length(rs)-length(Memo1.Lines[k])+1 do begin s:=AnsiLowerCase(copy(rs,e,length(M emo1.Lines[k]))); t:=0; //********* FOR ****************** for l :=0 to ts.Count-1 do begin if pos(AnsiLowerCase(ts[l]),s)<>0 then inc(t); end; //******* END FOR ****************{} if t=ts.Count then begin //********** WITH ********** with richedit1 do begin selstart:=e+lpr-1; sellength:=length(Memo1.Lines[k])+1; selattributes.color:=clBlue; end; end; //********** END WITH ****** {} end; lpr:=lpr+length(RichEdit1.Lines[j])+2; end; //******* END FOR ****************{} //*********************************** *********************************** **** end; end; procedure TForm1.FormCreate(Sender: TObject); begin ts:=TStringList.Create; ts.Delimiter:=' '; end; end.
I'm learning to live...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кто может написать программу для организации? | Алина Пася | Фриланс | 7 | 24.04.2008 20:15 |
Нужна помощь с алгоритмом расстановки ударения в предложении. | Gauss | Общие вопросы Delphi | 10 | 14.04.2008 15:31 |
Подскажите по организации Help | SnakeMan | Общие вопросы Delphi | 4 | 26.03.2008 07:22 |
проверить правильность расстановки операторов begin и end | Тёмка | Помощь студентам | 1 | 10.12.2007 13:07 |
косяк при организации итерационных вычислений | redfield | Microsoft Office Excel | 3 | 04.09.2007 21:35 |