-
Добрый вечер уважаемые. Выполняю запрос методом GET получаю в текстовую переменную S HTML код. Мне необходимо из всего HTML кода выдернуть табличку
<table class="callstable" cellpadding="2" cellspacing="0" width=500> <tr> <td style="border-bottom: 1px solid black; font-weight: bold;">Date</td><td style="border-bottom: 1px solid black; font-weight: bold;"> </td> <td style="border-bottom: 1px solid black; font-weight: bold;">Time</td> <td style="border-bottom: 1px solid black; font-weight: bold;"> </td> <td style="text-align: left; border-bottom: 1px solid black; font-weight: bold;">Pole1</td> <td style="border-bottom: 1px solid black; font-weight: bold;"> </td>
<td style="text-align: left; border-bottom: 1px solid black; font-weight: bold;">Pole2</td> <td style="border-bottom: 1px solid black; font-weight: bold;"> </td> <td style="text-align: left; border-bottom: 1px solid black; font-weight: bold;">Pole3</td> <td style="border-bottom: 1px solid black; font-weight: bold;"> </td> </tr>
Далее пошли строки <tr></tr> с данными.... для выше приведенных заголовков
</table>
и подкорректировать в ней данные.... Кто сталкивался? Как реализовать? Спасибо и премного благодарен.
-
> Мне необходимо из всего HTML кода выдернуть табличку
Pos() + Copy() - выдернуть можно все что угодно.
-
-
> и подкорректировать в ней данные....
с какой целью? я к тому, что на сервере ничего не измениться...
-
> Separator
Да действительно удобно, единственное не могу понять как к коде: r := TRegExpr.Create;
try
r.Expression := 'ТУТ ВЫРОЖЕНИЕ';
if r.Exec (S) then S:=r.Match [0];
finally r.Free;
end; перебрать все содержащиеся в тексте подстроки удовлетворяющие r.Expression, у меня r.Match [0]; содержит первое найденное? r.Match [1] ничего не содержит.... ((
-
Прошу прощения за лишнее беспокойство, наткнулся:
REPEAT r.Match [0] UNTIL not r.ExecNext;
-
А вот этот вопрос не получилось решить.... Как в REPEAT
r.Match [0]
UNTIL not r.ExecNext; заменить найденную строку r.Match [0] на свой текст, может средствами TRegExpr это можно сделать?
-
Там же есть функция Replace
-
> Там же есть функция Replace
Что то не могу понять как работает, Replace надо использовать отдельно от r.Exec? Или можно в цикле: REPEAT
r.Match [0]
r.Replace(r.Match [0],'то на что меняем')
UNTIL not r.ExecNext; ??
-
Экспрешшен то перед реплэйсом поменять надо.
-
Использовать отдельно, без Exec
-
либо он весь мач поменяет разом. кроме того реплейс - это функция
-
либо вообще ничего не поменяет ибо внутри мача вполне может не оказаться ничего, что бъет с выражением по которому найден сам этот мач.
-
Реализовал: r:=TRegExpr.Create;
try
r.Expression := ' [0-9][.][0-9]';
S:=r.Replace(S,'66.666',false);
finally
r.free;
end; Но не понимаю как реализовать замену всех искомых сумм не на фиксированное значение '66.666', а на произведение например, то есть в место 0.001 получить везде 0.001*2?
-
а что, проблема умножить найденную сумму (переведя ее сначала к double) на два и привести резалт обратно к строке для использования в реплейсе?
-
> а что, проблема умножить найденную сумму (переведя ее сначала > к double) на два и привести резалт обратно к строке для > использования в реплейсе? >
Это ясно, что переводить то? Как сослаться на эту сумму в коде: r:=TRegExpr.Create; try r.Expression := ' [0-9]{1,}[.][0-9]{2}'; S:=r.Replace(S,'66.666',false); finally r.free; end; ?
-
Ну странный ты однако. Ты что вообще реплейсишь? По моему это переменная S.
Ты спрашиваешь как сослаться на переменную?
-
S содержит результат GET запроса. В S надо произвести арифметические операции над каждым числом вида [0-9]{1,}[.][0-9]{2}. Вот мне и надо не просто РЕПЛЕЙСИТЬ все такие значения, а РЕПЛЕЙСИТЬ из умноженными на 0,5 например. Как мне сослаться на каждую сумму типа [0-9]{1,}[.][0-9]{2} для перевода ее в double?
-
ну так найди все вхождения подстрок - сумм. затем обработай.
-
Как мне сослаться на каждую сумму типа [0-9]{1,}[.][0-9]{2} для перевода ее в double?
через match конечно же. как же еще
|