Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2012, 22:52   #1
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию Достать из String

Здравствуйте друзья!
Помогите пожалуйста в следующем...

Есть строка:
Код:
tarted</td>
							<td class="info_col">Mar 26, 2012</td>
						</tr>
И из него достать:
Код:
Mar 26, 2012
Но суть в том, что HTML код на каждом сайте может меняться к примеру:

Код:
tarted</td>
	<td align=right class=menutxt><strong>Mar 27, 2012</strong></td>
Код:
tarted:</td>
                <td>30 Mar, 2012</td>
Я думал сделать вот так:
Код:
s:=idhttp1.get('https://');
Edit1.Text:=inttostr(pos('Started', s));
delete(s, 1, pos('Started', s));
delete(s, 100, pos('</html>', s));
Но дальше я не знаю, что делать...

Цитата:
Тогда к примеру, я очистил все до "Started"
Теперь дата начинается либо с месяца либо с числа
Как мне вбить в "pos" Такое большое количество дней(0..30)\месяцев(Jun..Dec) сразу?

Последний раз редактировалось record222; 31.03.2012 в 01:06.
record222 вне форума Ответить с цитированием
Старый 31.03.2012, 00:09   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Возможно стоит изучить и использовать RegExp.

А задача-то какая вообще? Сайтов много? Может и вид самой даты где-то отличается?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 31.03.2012, 00:15   #3
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

При нажатии на кнопку парситься дата создания проекта.

Дата может быть вида:
Код:
 30 Mar, 2012
или
Код:
Mar 27, 2012
Что такое RegExp?
record222 вне форума Ответить с цитированием
Старый 31.03.2012, 00:33   #4
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

В вашем варианте общего решения нет, только шаблонное.
Т.е. для сайта определяете шаблон поиска, а далее хоть RegExp хоть Pos[Ex]...
=master= вне форума Ответить с цитированием
Старый 31.03.2012, 01:06   #5
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

Понял!
Тогда к примеру, я очистил все до "Started"
Теперь дата начинается либо с месяца либо с числа
Как мне вбить в "pos" Такое большое количество дней(0..30)\месяцев(Jun..Dec) сразу?
record222 вне форума Ответить с цитированием
Старый 31.03.2012, 01:17   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если искать с помощью Pos, то прийдется в цикле сгененировать 366 возможных комбинаций ключа поиска, а поскольку может быть Mar 26 и 26 Mar, то все 732. Чет не очень это. Быстрей скорее всего будет искать 4 подряд расположенные цифры и если слева расположенные символы подходят под день-месяц, то поиск закончен, иначе дальше анализировать на 4 цифры. Можно считать, что первая из этих цифр должна быть двойкой. Можно сначала пытаться найти месяц (всего лишь 12 вариантов) и анализировать соседей на похожесть на число и год.
Цитата:
Что такое RegExp?
Поиск с помощью регулярных выражений. Это выражение еще уметь составить нужно, что весьма не просто
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.03.2012 в 01:20.
Аватар вне форума Ответить с цитированием
Старый 31.03.2012, 01:33   #7
=master=
Форумчанин
 
Регистрация: 26.03.2012
Сообщений: 665
По умолчанию

Дату надо всегда пробовать парсить, а не "вбивать", а вот настройки парсинга либо надо как-то хитро определять, либо ловить исключения (но это плохой путь).

Чтобы не делать сферического коня в вакууме, проще продумать некие правила поиска и парсинга, а далее просто назначать. Т.о. у вас получится все более менее универсально. При добавлении нового ресурса, указали путь, расписали правила, и все, парсер рабатает автономно. Изменились условия, тобиш, например, какой-то из ресурсов поменял формат вывода даты, вы обнаружили, поменяли правило, а парсер как работал так и продолжает.

Добавлю: если у вас всегда только так как вы показали, то все вышесказанное лабуда. Доходите посом до "Started", а далее тем-же посом + условия, и всех делов.

Последний раз редактировалось =master=; 31.03.2012 в 01:40.
=master= вне форума Ответить с цитированием
Старый 31.03.2012, 15:11   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Это выражение еще уметь составить нужно, что весьма не просто
Не особо помню синтаксис (обычно хватает статьи на вики или еще где-нибудь чтоб вспомнить), но вроде ничего сложного в этом случае нет. Какая-то такая идея:
(две цифры и (Mar или Apr или ...) запятая пробел четыре цифры) или ((Mar или Apr или ...) запятая пробел четыре цифры) или (мб еще 2 варианта с 1 цифрой если 1, 2, 3, ... а не 01, 02, 03, ...)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где достать книгу? dimorik Свободное общение 1 19.11.2010 11:54
Где достать MAC OS? Stilet Свободное общение 9 24.03.2010 21:48
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
Как достать админа? =Bgik= Свободное общение 32 17.01.2009 20:30