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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление подстроки между двумя тегами 
:(
    Опции темы
Gorets
Дата 11.7.2006, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нужно в тексте удалить все подстроки от "строка1" до "строка2"
т.е. исходная строка "123456789123456789"
начало диапазона удаления "23"
конец диапазона удаления  "7"

в итоге должна получиться строка "189189"

может есть готовая функция?
 
PM MAIL WWW ICQ   Вверх
volvo877
Дата 11.7.2006, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Gorets @  11.7.2006,  00:05 Найти цитируемый пост)
может есть готовая функция?
Может и есть, только проще и быстрее будет написать самому:
Код
function DeleteBetween(s, tag_start, tag_finish: string): string;
var
  finished: boolean = false;
  p1, p2: integer;
begin
  repeat
    p1 := pos(tag_start, s); p2 := pos(tag_finish, s);
    if (p1 * p2 > 0) and (p2 > p1) then
      delete(s, p1, p2 - p1 + length(tag_finish))
    else finished := true;
  until finished;
  result := s;
end;

...
// Вызов
s := DeleteBetween('123456789123456789', '23', '7');
...
 
PM MAIL   Вверх
Gorets
Дата 11.7.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не все так галадко с определением p2 := pos(tag_finish, s);
если  в тексте до tag_start встретится tag_finish то функция не сработает...
надо каким то образом начинать поиск tag_finish начиная с позиции p1

попробуй пропарсить такой текст
Код

<table width="90%" border=1><tr><th><small><a href="/index.php?m=services.transppl.schedule&amp;f=Schedule.Stan&amp;T2=22000&amp;sort=1&lng=uk">Номер поїзда</a></th>
<th><small><a href="/index.php?m=services.transppl.schedule&amp;f=Schedule.Stan&amp;T2=22000&amp;sort=2&lng=uk">Маршрут</a></th>
<th><small><a href="/index.php?m=services.transppl.schedule&amp;f=Schedule.Stan&amp;T2=22000&amp;sort=1&lng=uk">Перiодичнiсть</a></th>
<th><small><a href="/index.php?m=services.transppl.schedule&amp;f=Schedule.Stan&amp;T2=22000&amp;sort=3&lng=uk">Час приб.</a></th>
<th><small><a href="/index.php?m=services.transppl.schedule&amp;f=Schedule.Stan&amp;T2=22000&amp;sort=4&lng=uk">Час вiдпр.</a></th>
<th><small><a href="/index.php?m=services.transppl.schedule&amp;f=Schedule.Stan&amp;T2=22000&amp;sort=5&lng=uk">Прибуття на кінцеву станцію</a></th>
 

при tag_start='<a href' и tag_finish='>'  

Это сообщение отредактировал(а) Gorets - 11.7.2006, 13:35
PM MAIL WWW ICQ   Вверх
volvo877
Дата 11.7.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Попробуй тогда вот это:
Код

function DeleteBetween(s, tag_start, tag_finish: string): string;
var
  finished: boolean = false;
  p1, p2: integer;
begin
  repeat
    p1 := pos(tag_start, s);
    p2 := p1 + pos(tag_finish, copy(s, p1, length(s))) - 1; // Это нужно было добавить
    if (p1 * p2 > 0) and (p2 > p1) then
      delete(s, p1, p2 - p1 + length(tag_finish))
    else finished := true;
  until finished;
  result := s;
end;
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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