Форум: "Прочее";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
ВнизКакой самый простой строковый алгоритм? Найти похожие ветки
← →
R_R (2011-05-06 01:52) [0]Есть два тега открывающий и закрывающий, нужно найти индекс вхождения соответсвующего закрывающего тега, внутри могут быть такие же теги...
← →
Германн © (2011-05-06 02:02) [1]
> Какой самый простой строковый алгоритм?
>
> R_R (06.05.11 01:52)
>
> Есть два тега открывающий и закрывающий, нужно найти индекс
> вхождения соответсвующего закрывающего тега, внутри могут
> быть такие же теги...
>
PosEx не?
← →
Дмитрий С © (2011-05-06 06:43) [2]а что там сложного for и вперед
← →
w (2011-05-06 07:05) [3]for
считаем открывающие и закрывающие теги попутно запоминая их позиции
← →
han_malign (2011-05-06 09:43) [4]Выделение тэга (с признаком открытие,закрытие[,<лист/>]) - элементарно.
Для проверки незакрытых тэгов нужен стек(LIFO) открытых тэгов, если стек опустошен - это искомый закрывающий...
Можно простой рекурсией(на то он и стек) - если глубина не очень большая...
З.Ы. Естественно нужно обрабатывать коллизии непарных открытий/закрытий тэга.
Если это строгий XML - можно ограничиться той же рекурсией с проверкой последнего отрытого.
Если это HTML - все гораздо веселее - придется делать таблицу известных(описанных в спецификации) тэгов, с признаками обязательности закрытия, допустимыми закрывающими родителями, и является ли "брат" зарывающим(для известных тэгов это вроде всегда так) или вложенным, а так же поиск по всему стеку открытых тэгов...
Например, по старой спецификации вполне допустима конструкция:<table>
<tr><td>1.1<td>1.2
<tr><td>2.1<td>2.2
</table>
- это не учитывая, что браузеры в режиме совместимости обрабатывают и недопустимые по спецификации полузакрытые тэги...
← →
Anatoly Podgoretsky © (2011-05-06 10:15) [5]> Германн (06.05.2011 02:02:01) [1]
А зачем тут EX когда и обычного POS достаточно, и до лампочки какие то
другие теги.
Весь алгоритм влазит в одну строчку
← →
clickmaker © (2011-05-06 11:02) [6]> Весь алгоритм влазит в одну строчку
алгоритм - в студию
← →
Anatoly Podgoretsky © (2011-05-06 12:06) [7]
> это не учитывая, что браузеры в режиме совместимости обрабатывают
> и недопустимые по спецификации полузакрытые тэги...
По условию
> Есть два тега открывающий и закрывающий
← →
Anatoly Podgoretsky © (2011-05-06 12:06) [8]
index := Pos(закрывающий тег, строка);
← →
Cobalt © (2011-05-06 12:53) [9]все гениальное - просто :)
З.Ы. грамотнее формулируйте условия
← →
Дмитрий С © (2011-05-08 18:09) [10]
> Anatoly Podgoretsky © (06.05.11 12:06) [8]
внутри могут быть такие же теги, это не учитывается
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2011.08.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c