Здравствуйте, jyuyjiyuijyu, Вы писали:
J>Здравствуйте, jazzer, Вы писали:
J>>Если этот тег не встречается больше нигде, то регэкспом, вестимо.
J>ой что то я не уверен ...
J>помните первую тему про регулярки мне пришлось переписать все на указателях и J>заработало фантастически быстро ...
Ну-ну. Удачи с запихиванием any html tag в указатели
J>так что думаю стоит рассматривать только реализацию на голых указателях ...
Хозяин — барин
J>просто это команда в гуи и она должна мгновенно выдавать результат ...
Здравствуйте, jazzer, Вы писали:
J>Ну-ну. Удачи с запихиванием any html tag в указатели
у меня мной сгенерированный хтмл поэтому я могу просто искать < > и вырезать их
J>>просто это команда в гуи и она должна мгновенно выдавать результат ...
J>даже с файлом на 5ГБ?
таких файлов не может быть думаю максимум до 100 мб
Re[5]: самый быстрый способ удалить все <any html tag>
Здравствуйте, jyuyjiyuijyu, Вы писали:
J>у меня мной сгенерированный хтмл поэтому я могу просто искать < > и вырезать их
Т.е. тебе надо вырезать не html-теги, а просто текст между угловыми скобками?
Тогда на указателях проще всего, и пишется в три строчки: копируешь все до открывающей скобки, потом ищешь закрывающую, потом идешь обратно на шаг 1.
J>>>просто это команда в гуи и она должна мгновенно выдавать результат ...
J>>даже с файлом на 5ГБ?
J>таких файлов не может быть думаю максимум до 100 мб
и куда оно в гуй выдаст 100-метровый результат?
Здравствуйте, jazzer, Вы писали:
J>Т.е. тебе надо вырезать не html-теги, а просто текст между угловыми скобками? J>Тогда на указателях проще всего, и пишется в три строчки: копируешь все до открывающей скобки, потом ищешь закрывающую, потом идешь обратно на шаг 1.
ну я примерно такой код и набросал вот он но это пока черновик
void fast_remove_tags(const std::wstring& text, std::wstring& ret)
{
PСWSTR p = text.c_str(), q;
PCWSTR hdr = L"<DIV class=ST>";
p = wcsstr(p, hdr);
p += wcslen(hdr);
while (*p)
{
q = wcschr(p, L'<');
if (!q)
{
break;
}
if (q - p)
{
ret.append(p, q - p);
}
if (q[1] == L'B' && q[2] == L'R' && q[3] == L'>')
{
ret.append(L"\r\n");
}
p = wcschr(q, L'>') + 1;
}
}
возможно лучше заменить wcschr на цикл ? профайлер еще не натравливал на этот код ...
J>>>>просто это команда в гуи и она должна мгновенно выдавать результат ...
J>>>даже с файлом на 5ГБ?
J>>таких файлов не может быть думаю максимум до 100 мб J>и куда оно в гуй выдаст 100-метровый результат?
ну это я тоже преувеличил думаю реально 3 мб где то ...
Re[6]: самый быстрый способ удалить все <any html tag>
Здравствуйте, Кодт, Вы писали:
К>Ага, а как насчёт превращения всяких &entity; и &#nnn; в соответствующие символы? К>По крайней мере, <, >, & точно.
у меня же смешанная сборка натив + менеджед я юзаю HttpUtility::HtmlDecode