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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2018, 14:44   #1
kladsss
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 50
По умолчанию Удаление текста между символами / Delphi/ RAD XE3+

Ребята подскажите как решить такую задачу. Уже три дня ломаю голову и результата ноль.

Задача: Удалить текст между данными символами включая - сами символы

Текст до обработки:

TEST "111111> TEST1 TEST "111111> TEST1 TEST "111111> TEST1
TEST """111111> TEST1 TEST """111111> TEST1 TEST """111111> TEST1
TEST """222222>> TEST2 TEST """222222>> TEST2 TEST """222222>> TEST2
TEST """333>>> TEST3 TEST """333>>> TEST3 TEST """333>>> TEST3
TEST "444444>>> TEST4 TEST "444444>>> TEST4 TEST "444444>>> TEST4 TEST "444444>>> TEST4
TEST ""5555>>> TEST5 TEST ""5555>>> TEST5

Результат, после обработки должен быть вот в таком виде:

TEST TEST1 TEST TEST1 TEST TEST1
TEST TEST1 TEST TEST1 TEST TEST1
TEST TEST2 TEST TEST2 TEST TEST2
TEST TEST3 TEST TEST3 TEST TEST3
TEST TEST4 TEST TEST4 TEST TEST4 TEST TEST4
TEST TEST5 TEST TEST5

П/C: Обработка из файла и сохранение в файл.

Я не совсем деревянный и по отдельности то знаю как сделать.
К примеру делал вот так (Работает, но постоянно нужно подстраивать количество символов в k+3 и i+1):
Код:
var
s,res: String;
i,k: Integer;
 
begin
s:=Memo1.Lines.text;
 i:=pos('"""',s);
 while i<>0 do begin
  k:=pos('>>',s);
  res:=copy(s,i+1,k-i);
  delete(s,i,k+3-i);
  i:=pos('"""',s);
delete(s,pos('"""',s),pos('>>',s)+3-pos('"""',s));
 end;
 Memo1.Lines.text:=s;
end;
Может у кого есть опыт по решению такой задачи. Заранее благодарен за помощь.
kladsss вне форума Ответить с цитированием
Старый 17.05.2018, 15:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

если не заморачиваться сильно с быстродействием, то можно так:

Код:
implementation

uses StrUtils;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var s : string;
  p1, p2 : integer;
begin
  s := Memo1.Lines.Text;
  p1 := Pos('"', s);
  while p1>0 do begin
    p2 := PosEx('>', s, p1);
    if p2<1 then Break;
    while (p2<Length(s)) and (s[p2+1]='>') do Inc(p2);
    Delete(s, p1, p2+2-p1);
    p1 := Pos('"', s);
  end;
  Memo1.Lines.Text := s
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.05.2018, 18:31   #3
kladsss
Пользователь
 
Регистрация: 22.10.2017
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
если не заморачиваться сильно с быстродействием, то можно так:
Serge_Bliznykov, Огромнейшее, ЧЕЛОВЕЧЕСКОЕ спасибо. Хотя скорость и средняя но это не беда. Главное что работает, вот это самое главное. Выручили меня... Респект!
kladsss вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation - Delphi/RAD XE3+ kladsss Общие вопросы Delphi 6 23.04.2018 08:23
RAD XE3 и TChart Pcrepair Общие вопросы Delphi 5 31.05.2013 15:23
Строка между символами. Delphi ADK01 Помощь студентам 1 01.03.2013 21:38
C++ Builder RAD XE3 Загрузка ресурсов taburetka C++ Builder 2 17.12.2012 01:27
Удаление элементов из динамического массива (Delphi XE3) Andr_XxX Помощь студентам 2 16.12.2012 19:40