Russian Qt Forum

Qt => Общие вопросы => Тема начата: Alp от Ноябрь 17, 2009, 16:49



Название: Plaint text -> html tagged text
Отправлено: Alp от Ноябрь 17, 2009, 16:49
Есть строчка с HTML-тэгами (A), есть она же только без них (B). И есть подстрока (C), которая входит в последнюю (даны начальный индекс и длина).
Задача: найти строку, соответствующую (C) в строке (A) с учетом всех тегов.

Например:
A = "Однажды в <some tag="qwe">студеную зимнюю</some> пору <bold>я из лесу вышел</bold>, <a href="asdasd">был сильный</a> мороз"
B = "Однажды в студеную зимнюю пору я из лесу вышел, был сильный мороз"
C = "я из лесу вышел, был сильный"
bIdxStart = 31,
bLength   = 28

Надо найти aIdxStart (=54) и aLength (=62)

Алгоритм "находим первое слово из С, берем правую часть относительно него от А, стрипаем теги, проверяем остаток строки, если не сошлось ищем дальше" не подходит - перед первым словом из С в А могут быть открывающие теги.

Второй вариант как модификация первого - заменить в тегах пробелы на подчеркивания (А'), после чего найти начало (как описано выше) и по числу пробелов определить конец последовательности. Из-за сохранения числа символов полученные данные будут применимы и к исходной последовательности А.

Может есть варианты умнее?