![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
rodendron |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 22.3.2005 Репутация: нет Всего: нет |
Добрый день.
Помогите пожалуйста решить следующую проблему. Загрузить из неструктурированного HTML документа данные в систему. Необходимо заменить во всем документе теги, оставив только текст. При этом необходимо оставить некоторые теги(исключения). Объясню на пальцах(так проще) Есть в Memo1.Text следующая информация:
Необходимо получить из этого вот такую информацию:
То есть, удалить все вложения < ... >, за иключением маски <a что-то там. Нашел StringReplace, но как работать с ней по маске толком не понял. Заменил пока все BR на перевод строки. Заранее благодарен за помощь. |
||||
|
|||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
StringReplace по маске не заменяет. Тебе в начале надо найти все фрагменты, которые надо заменить, а потом производить замену... Но проще с другой стороны - найти нужные данные и вырезать их, а потом сформировать текст как тебе необходимо самому
-------------------- ![]() |
|||
|
||||
rodendron |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 22.3.2005 Репутация: нет Всего: нет |
То есть как я понимаю, чтобы вырезать, мне необходимо находить позицию-начало позицию-конец и вырезать фрагмент?
Да данные мне все нужны, в общем все равно необходимо будет бежать по тексту? А как быть в случае если тег открывается на 1-ой строчке а закрывается на второй? Добавлено через 5 минут и 23 секунды Кажется понимаю, нужно перебирать каждый символ, потом как тег закрывается, запускать StringReplace с накопленным текстом и так далее? |
|||
|
||||
rodendron |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 22.3.2005 Репутация: нет Всего: нет |
Пробую сейчас таким методом - оооочень долго :(
Неужели нет удаляение по маске? '<style>*</style>' |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Есть сторонний компонент TRegExpr который как раз это и делает, ищет по маске. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Значит проверяй алгоритм... Любая замена все-равно так-же работает, а раз у тебя очень медлено - значит виноват именно твой алгоритм. -------------------- ![]() |
|||
|
||||
rodendron |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 152 Регистрация: 22.3.2005 Репутация: нет Всего: нет |
Судя по всему мне нужен TRegExpr.
Сейчас буду пробовать с ней. |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
С ним код будет выглядеть привлекательнее, но работать быстрее вряд ли будет, если сравнивать с нормальной реализацией поиска и замены текста. -------------------- ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Так он не влияет на скорость удаления текста, только на скорость и удобство поиска, а также на универсальность. Удалять подстроки слишком медленная операция. Лучше выделить буфер такого же размера как и весь текст, а затем производить копирование в него всего, кроме найденных фрагментов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
исчо вариант - использовать мелкомягкий прасер HTML. ищи по IHTMLDom....
-------------------- There are always someone smarter than you... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |