![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите, пожалуйста, распарсить строку через copy & pos:
<input type='hidden' name='k' value='34212'> Нужно получить 34212. Регуляркой решается просто, но их подключать не хочу: cлишком уж монструозное решение будет, да и тем более в комплекте у меня только VBScript_RegExp_55_TLB, а сторонние я не люблю. Имеется в виду, что эта строка находится в переменной, в которой вся полученная страница... Последний раз редактировалось MrDiG, 25.11.2010 в 10:40. |
|
#2
|
||||
|
||||
|
как-то так:
Код:
copy(s, pos('value=',s)+6, Length(s)-pos('value=',s)+6); |
|
#3
|
|||
|
|||
|
Спасибо
![]() |
|
#4
|
||||
|
||||
|
Там только надо не +6 а -6
|
|
#5
|
|||
|
|||
|
Я уже понял. Твой пример натолкнул меня, как делать правильно, но проблема осталась. Размер этого значения меняется, да и скорость хромает. Решил вернуться к регулярке. Вот только не могу с экранированием кавычек разобраться.
Допустим Reg.Pattern := 'name='k' value='(.*)'>'; Как экранировать кавычки вокруг k и вокруг значения? |
|
#6
|
|||
|
|||
|
Усё! Поступил тупо, но работает
Reg.Pattern := 'name=[^\s]k[^\s] value=[^\s](.*)[^\s]>'; |
|
#7
|
||||
|
||||
|
можно впринципе так:
Код:
delete(s,1,pos('value='+#$27,s)+7);
copy(s,1,pos(#$27,s));7 - длина строки, которую ищем. Вроде так. |
|
#8
|
|||
|
|||
|
Спасибо за решение, но уже сделал на регулярке, ибо скорость в моём случае критична.
|