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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контекстная замена в тексте, Контекстная замена в тексте 
:(
    Опции темы
rodendron
Дата 22.5.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добрый день.

Помогите пожалуйста решить следующую проблему.

Загрузить из неструктурированного HTML документа данные в систему.

Необходимо заменить во всем документе теги, оставив только текст. При этом необходимо оставить некоторые теги(исключения).

Объясню на пальцах(так проще)

Есть в Memo1.Text следующая информация:
Код

<HTML><TITLE>Моя страница за январь</TITLE><b>данные за январь</b>
<BODY>
<a href=//serv/12052006.pdf targer=_blank>12/05/2006</a>
Идем далее
</BODY>
</HTML>


Необходимо получить из этого вот такую информацию:
Код

Моя страница за январь данные за январь
<a href=//serv/12052006.pdf targer=_blank>12/05/2006</a>
Идем далее


То есть, удалить все вложения < ... >, за иключением маски <a что-то там.

Нашел StringReplace, но как работать с ней по маске толком не понял.
Заменил пока все BR на перевод строки.

Заранее благодарен за помощь.
PM MAIL   Вверх
aktuba
Дата 22.5.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



StringReplace по маске не заменяет. Тебе в начале надо найти все фрагменты, которые надо заменить, а потом производить замену... Но проще с другой стороны - найти нужные данные и вырезать их, а потом сформировать текст как тебе необходимо самому


--------------------
user posted image
PM MAIL WWW Skype   Вверх
rodendron
Дата 22.5.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



То есть как я понимаю, чтобы вырезать, мне необходимо находить позицию-начало позицию-конец и вырезать фрагмент?

Да данные мне все нужны, в общем все равно необходимо будет бежать по тексту?

А как быть в случае если тег открывается на 1-ой строчке а закрывается на второй?

Добавлено через 5 минут и 23 секунды
Кажется понимаю, нужно перебирать каждый символ, потом как тег закрывается, запускать StringReplace с накопленным текстом и так далее?
PM MAIL   Вверх
rodendron
Дата 22.5.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пробую сейчас таким методом - оооочень долго :(

Неужели нет удаляение по маске?

'<style>*</style>'
PM MAIL   Вверх
Alexeis
Дата 22.5.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(rodendron @  22.5.2007,  17:03 Найти цитируемый пост)
Неужели нет удаляение по маске?

  Есть сторонний компонент TRegExpr который как раз это и делает, ищет по маске.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
aktuba
Дата 22.5.2007, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

Пробую сейчас таким методом - оооочень долго :(

Неужели нет удаляение по маске?

'<style>*</style>' 


Значит проверяй алгоритм... Любая замена все-равно так-же работает, а раз у тебя очень медлено - значит виноват именно твой алгоритм.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
rodendron
Дата 23.5.2007, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Судя по всему мне нужен TRegExpr.

Сейчас буду пробовать с ней.
PM MAIL   Вверх
aktuba
Дата 23.5.2007, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

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



Цитата

Судя по всему мне нужен TRegExpr.


С ним код будет выглядеть привлекательнее, но работать быстрее вряд ли будет, если сравнивать с нормальной реализацией поиска и замены текста.


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Alexeis
Дата 23.5.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(aktuba @  23.5.2007,  08:36 Найти цитируемый пост)
С ним код будет выглядеть привлекательнее, но работать быстрее вряд ли будет, если сравнивать с нормальной реализацией поиска и замены текста. 

  Так он не влияет на скорость удаления текста, только на скорость и удобство поиска, а также на универсальность. Удалять подстроки слишком медленная операция. Лучше выделить буфер такого же размера как и весь текст, а затем производить копирование в него всего, кроме найденных фрагментов.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MetalFan
Дата 23.5.2007, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


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

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



исчо вариант - использовать мелкомягкий прасер HTML. ищи по IHTMLDom....


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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