![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем доброе время суток. Не получается спарсить в строке значения. Сама строка:"tmp.init('timers_prometiumCollector', 1322830122, 1322833722)". нужно соответственно спарсить число 1322830122 и 1322833722.
Кусок кода на странице: Код:
<div id="timers_prometiumCollector"></div>
<script language="javascript">
var tmp = new SkylabTimer();
tmp.init('timers_prometiumCollector', 1322830122, 1322833722);
tmp = undefined;
</script>Пытаюсь спарсить так: Код:
reg.Expression:='tmp.init('+#039+'timers_prometiumCollector'+#039+', (.*?), (.*?))';
if reg.Exec(s3) then begin
edit1.Text:=reg.match[1];
edit2.Text:=reg.Match[2];Последний раз редактировалось babay89, 02.12.2011 в 17:45. |
|
#2
|
||||
|
||||
|
Имхо проще всего так:
1) Находим 'tmp.init' через POS. 2) Находим первую запятую после него через POS. 3) Находим вторую. 4) Выдираем текст между ними. 5) Находим третью. 6) Выдираем второе число. Код:
k:=pos('tmp.init',s);
if (k=0) then ShowMessage('Error');//error
delete(s, 1, k+8);// длина строки tmp.init = 8, ее тоже можно удалить.
k:=pos(',',s);
if (k=0) then ShowMessage('Error');//error
delete(s,1,k)Последний раз редактировалось Bargest, 02.12.2011 в 18:22. |
|
#3
|
|||
|
|||
|
Цитата:
Блин, опять не работает... Просто ничего не происходит ![]() Последний раз редактировалось babay89, 02.12.2011 в 18:33. |
|
#4
|
||||
|
||||
|
Ну так дописать надо. Написано же в конце: "Далее в том же духе". После кода почти в самом начале строки стоит первое число, за запятой - второе.
|
|
#5
|
|||
|
|||
|
Up. Помогите плиз...
|
|
#8
|
|||
|
|||
|
а нельзя ли просто найти первую запятую,взять первое число ,потом PosEx'ом найти вторую запятую от первой. и второе число взять.
а тримом пробелы убрать как вариант. Такой примерно код: ,правда написал всё в каждой строчке чтоб наглядно было,а можно сразу без лишних переменных,буквально в три строчки весь код уместить. Код:
Uses strUtils //подключаем PosEx
...
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
x:integer;
begin
s:=Edit1.Text;//едит1 содержит строку для парсинга
x:=Pos(''',',s)+2;//ищем позицию первой запятой с ковычкой //+2 потому что длинна ковычки и запятой-два символа
edit2.text:=Copy(s,x,posex(',',s,x)-x);//копируем с позиции X,длинной до второй запятой//
x:=PosEx(',',s,x)+1;//ищем начало ьвторого числа
Edit3.Text:=Copy(s,x,Pos(')',s)-x);
Edit2.Text:=Trim(Edit2.Text);//убираем пробелы
Edit3.Text:=Trim(Edit3.Text);
end;Последний раз редактировалось Snake22, 03.12.2011 в 13:49. |