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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.09.2008, 09:53   #1
varvara16
Пользователь
 
Регистрация: 05.11.2007
Сообщений: 57
По умолчанию Поиск предложений

Здравствуйте. Помогите, пожалуйста, мне нужно отредактировать текст из TntMemo. Нужно убрать лишние пробелы, и выделить предложения. Но нужно обработать и исключительные ситуации такие как 3.5 и т.п. Заранее благодарю за помощь.
varvara16 вне форума Ответить с цитированием
Старый 09.09.2008, 11:21   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Поскольку текста не видим, будем считать, что конец предложения это комбинация символов точки и пробела. Тогда сначала удалим лишние пробелы, вставим пробел в конец текста и по указанному приципу разобьем текст на предложения, которые вставим в Мемо2.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    i:integer;
begin
   s:=Memo1.Text;
   for i:=length(s)downto 1 do
   while pos('  ',s)>0  do  delete(s,pos('  ',s),1);//здесь в апострофах по 2 пробела, один удаляем
   s:=s+' ';//добавляем пробел
   while pos('. ',s) > 0 do //в апострофах точка+пробел
   begin
    Memo2.Lines.Add(copy(s,1,pos('. ',s)));
    delete(s,1,pos('. ',s)+1);
   end;

end;
puporev вне форума Ответить с цитированием
Старый 10.09.2008, 09:30   #3
varvara16
Пользователь
 
Регистрация: 05.11.2007
Сообщений: 57
По умолчанию

Спасибо огрооооооомное!!! Извините, а как можно одновременно проверить '. ' и '? ' и '! '. Спасибо за все.
varvara16 вне форума Ответить с цитированием
Старый 10.09.2008, 13:38   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Надо было мне сразу догадаться, а лучше Вам сразу написать. Сделайте так:
Код:
const c=['.','!','?'];
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s:string;
    i:integer;
begin
   s:=Memo1.Text;
   for i:=length(s)downto 1 do
   while pos('  ',s)>0  do  delete(s,pos('  ',s),1);
   s:=s+' '; i:=1;
   while i<=length(s)do
     begin
      if (s[i] in c)and(s[i+1]=' ') then
         begin
           Memo2.Lines.Add(copy(s,1,i));
           delete(s,1,i+1);
           i:=i-length(copy(s,1,i))+1;
         end;
      inc(i);
     end;
end;

end.
puporev вне форума Ответить с цитированием
Старый 11.09.2008, 09:33   #5
varvara16
Пользователь
 
Регистрация: 05.11.2007
Сообщений: 57
По умолчанию

Спасибо!!!!!!!!!!
varvara16 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск MAKEDON Общие вопросы Delphi 2 22.02.2008 22:47
ПОИСК В БД HOMER БД в Delphi 2 20.12.2007 21:41
как осуществить поиск в компоненте WebBrowser1 в delphi 7 SonClan Работа с сетью в Delphi 5 20.11.2007 12:43
подсчитать количество символов слов и предложений nev Помощь студентам 4 09.06.2007 21:22