самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 10:25
Оценка: :)
Всем привет

существует огромный документ такого вида

<any html tag> ... plain text ... <any html tag>

хранится он в std::wstring ...

какой самый быстрый способ удалить все <any html tag> ?
Re: самый быстрый способ удалить все <any html tag>
От: jazzer Россия Skype: enerjazzer
Дата: 04.02.13 10:29
Оценка: :)
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Всем привет


J>существует огромный документ такого вида


J><any html tag> ... plain text ... <any html tag>


J>хранится он в std::wstring ...


J>какой самый быстрый способ удалить все <any html tag> ?


Если этот тег не встречается больше нигде, то регэкспом, вестимо.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 10:39
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Если этот тег не встречается больше нигде, то регэкспом, вестимо.


ой что то я не уверен ...

помните первую тему про регулярки мне пришлось переписать все на указателях и
заработало фантастически быстро ...

так что думаю стоит рассматривать только реализацию на голых указателях ...


просто это команда в гуи и она должна мгновенно выдавать результат ...
Re: самый быстрый способ удалить все <any html tag>
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.02.13 10:42
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>какой самый быстрый способ удалить все <any html tag> ?

А что с комментариями, CDATA, IGNORE и насколько нужно отличать <any html tag> от <some non-html tag>?
Re[3]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 10:42
Оценка:
например документ может быть таким

<font ...> ... plain text ... </font> ...plain text ... <img ...> ... plain text ... <br>

на выходе должен быть только ...plain text...
Re[2]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 10:45
Оценка:
Здравствуйте, samius, Вы писали:

S>А что с комментариями, CDATA, IGNORE и насколько нужно отличать <any html tag> от <some non-html tag>?


комментариев нет ... теги различать не надо ...

нужно удалить все что между <...> и сами <> разумеется ...

единственное что тег <br> нужно не просто удалить а заменить его на перевод строки \r\n
Re[3]: самый быстрый способ удалить все <any html tag>
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.02.13 10:47
Оценка:
Здравствуйте, 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  
Дата: 04.02.13 10:49
Оценка:
в тексте знаки < > в голом виде встретиться не могут так как это html документ так что если видим < > то это точно тег который надо удалить ...
Re[4]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 10:52
Оценка:
Здравствуйте, samius, Вы писали:

S>Раз такая пьянка, то в <div>, <p> и прочих блочных тегах надо перевод строки?


а таких тегов в документе точно нет ... подставлять \r\n надо только для <br>
Re[4]: самый быстрый способ удалить все <any html tag>
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.02.13 11:02
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:


J>в тексте знаки < > в голом виде встретиться не могут так как это html документ


Это ведь неправда
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
  <head>
    <title>T</title>
  </head>
<body>
 >
</body>
</html>

This document was successfully checked as HTML 2.0!
Re[5]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 11:14
Оценка:
Здравствуйте, samius, Вы писали:

J>>в тексте знаки < > в голом виде встретиться не могут так как это html документ


S>Это ведь неправда


правда ... этот html генерирую я ...
Re[6]: самый быстрый способ удалить все <any html tag>
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.02.13 11:16
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

S>>Это ведь неправда


J>правда ... этот html генерирую я ...

Т.е. это частный случай.
Тогда может проще сгенерировать его без тегов?
Re[7]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 11:25
Оценка:
Здравствуйте, samius, Вы писали:

S>Т.е. это частный случай.

S>Тогда может проще сгенерировать его без тегов?

без тегов не могу ... он должен рендериться браузером ...

просто в какой то момент мне надо скопировать весь текст из окна ...

так вот стандартная команда Document->ExecCommand(Copy) ужасно медленная ...
Re[8]: самый быстрый способ удалить все <any html tag>
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.02.13 11:38
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>Здравствуйте, samius, Вы писали:


J>так вот стандартная команда Document->ExecCommand(Copy) ужасно медленная ...

Еще бы! Полагаю что она делает кучу работы.

Вобщем, раз формат документа таки свой (без комментов, CDATA и т.п.), то быстрее цикла вряд ли что можно придумать. Особенно, учитывая character-reference-ы.

Для начала я бы сделал 2 забега. Первый — подсчет длины текста, конвертация char-ref-ов и обнуление всего лишнего. Второй — сбор данных в финальный буфер.
Re[6]: самый быстрый способ удалить все <any html tag>
От: DeafCoder  
Дата: 04.02.13 11:49
Оценка:
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>правда ... этот html генерирую я ...


Лучше тогда сгенерить плаин текст и положить его в hidden поле html-я.
Re[3]: самый быстрый способ удалить все <any html tag>
От: MTD https://github.com/mtrempoltsev
Дата: 04.02.13 12:00
Оценка: +1
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>>Если этот тег не встречается больше нигде, то регэкспом, вестимо.


J>ой что то я не уверен ...


На тебе самую быструю реализацию: http://codepad.org/HY9L7D8I (без обработки ошибок), только string заменишь на столь горячо любимые тобой голые узатели.

J>просто это команда в гуи и она должна мгновенно выдавать результат ...


А вот так приличные люди не делают — если операция может занять длительное время, нужно выводить диалог с прогресс баром, а не расчитывать на малый объем данных/голые указатели
Re: самый быстрый способ удалить все <any html tag>
От: enji  
Дата: 04.02.13 13:14
Оценка: 1 (1)
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>какой самый быстрый способ удалить все <any html tag> ?


Я бы все же начал с обычных регулярок.
Если не хватает их быстродействия — попадалась как-то тулза, которая "компилировала" регулярку в сишную программу.

Ну и на крайний случай — как тут уже написали — ходишь по тексту самостоятельно
Re: самый быстрый способ удалить все <any html tag>
От: c-smile Канада http://terrainformatica.com
Дата: 04.02.13 17:37
Оценка: 1 (1)
Здравствуйте, jyuyjiyuijyu, Вы писали:

J>какой самый быстрый способ удалить все <any html tag> ?


Это самый быстрый точно:
http://www.codeproject.com/Articles/14076/Fast-and-Compact-HTML-XML-Scanner-Tokenizer
Re[2]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 19:49
Оценка:
всех благодарю, буду что нибудь пробовать
Re[4]: самый быстрый способ удалить все <any html tag>
От: jyuyjiyuijyu  
Дата: 04.02.13 23:25
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>На тебе самую быструю реализацию: http://codepad.org/HY9L7D8I (без обработки ошибок), только string заменишь на столь горячо любимые тобой голые узатели.


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

J>>просто это команда в гуи и она должна мгновенно выдавать результат ...


MTD>А вот так приличные люди не делают — если операция может занять длительное время, нужно выводить диалог с прогресс баром, а не расчитывать на малый объем данных/голые указатели


это да если не добъюсь приемлемой скорости не слишком большими силами то сделаю прогресс бар
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.