Здравствуйте, jyuyjiyuijyu, Вы писали:
J>Всем привет
J>существует огромный документ такого вида
J><any html tag> ... plain text ... <any html tag>
J>хранится он в std::wstring ...
J>какой самый быстрый способ удалить все <any html tag> ?
Если этот тег не встречается больше нигде, то регэкспом, вестимо.
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>какой самый быстрый способ удалить все <any html tag> ?
А что с комментариями, CDATA, IGNORE и насколько нужно отличать <any html tag> от <some non-html tag>?
Re[3]: самый быстрый способ удалить все <any html tag>
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>Здравствуйте, samius, Вы писали:
S>>А что с комментариями, CDATA, IGNORE и насколько нужно отличать <any html tag> от <some non-html tag>?
J>комментариев нет ... теги различать не надо ...
J>нужно удалить все что между <...> и сами <> разумеется ...
J>единственное что тег <br> нужно не просто удалить а заменить его на перевод строки \r\n
Раз такая пьянка, то в <div>, <p> и прочих блочных тегах надо перевод строки?
Re[3]: самый быстрый способ удалить все <any html tag>
Здравствуйте, jyuyjiyuijyu, Вы писали:
S>>Это ведь неправда
J>правда ... этот html генерирую я ...
Т.е. это частный случай.
Тогда может проще сгенерировать его без тегов?
Re[7]: самый быстрый способ удалить все <any html tag>
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>Здравствуйте, samius, Вы писали:
J>так вот стандартная команда Document->ExecCommand(Copy) ужасно медленная ...
Еще бы! Полагаю что она делает кучу работы.
Вобщем, раз формат документа таки свой (без комментов, CDATA и т.п.), то быстрее цикла вряд ли что можно придумать. Особенно, учитывая character-reference-ы.
Для начала я бы сделал 2 забега. Первый — подсчет длины текста, конвертация char-ref-ов и обнуление всего лишнего. Второй — сбор данных в финальный буфер.
Re[6]: самый быстрый способ удалить все <any html tag>
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>>Если этот тег не встречается больше нигде, то регэкспом, вестимо.
J>ой что то я не уверен ...
На тебе самую быструю реализацию: http://codepad.org/HY9L7D8I (без обработки ошибок), только string заменишь на столь горячо любимые тобой голые узатели.
J>просто это команда в гуи и она должна мгновенно выдавать результат ...
А вот так приличные люди не делают — если операция может занять длительное время, нужно выводить диалог с прогресс баром, а не расчитывать на малый объем данных/голые указатели
Re: самый быстрый способ удалить все <any html tag>
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>какой самый быстрый способ удалить все <any html tag> ?
Я бы все же начал с обычных регулярок.
Если не хватает их быстродействия — попадалась как-то тулза, которая "компилировала" регулярку в сишную программу.
Ну и на крайний случай — как тут уже написали — ходишь по тексту самостоятельно
Re: самый быстрый способ удалить все <any html tag>
Здравствуйте, MTD, Вы писали:
MTD>На тебе самую быструю реализацию: http://codepad.org/HY9L7D8I (без обработки ошибок), только string заменишь на столь горячо любимые тобой голые узатели.
Вы ошибаетесь меня тошнит от велосипедостроения ... но нужда заставила
J>>просто это команда в гуи и она должна мгновенно выдавать результат ...
MTD>А вот так приличные люди не делают — если операция может занять длительное время, нужно выводить диалог с прогресс баром, а не расчитывать на малый объем данных/голые указатели
это да если не добъюсь приемлемой скорости не слишком большими силами то сделаю прогресс бар