Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск в тексте до символа, Нужна помощь 
:(
    Опции темы
ishimcity
Дата 30.10.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

Репутация: нет
Всего: 1



Здраствуйте. помогите плиз есть к примеру строка: index.php?1234567"BLABLABLA как мне из ее выдернуть только цифры? с условием цифры могут менять свою длину то есть может быть 12345 или 123456 или 1234567. вопщем принцип как получить все данные от ? до ".спасибо smile 
PM MAIL ICQ Skype YIM   Вверх
Alix
Дата 30.10.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 8
Всего: 23



Код
function extractNums(const s : string) : string;
var
  i, j : integer;
begin
  result := '';
  i := pos('?', s);
  if i = 0 then
    exit;

  j := i + 1;
  while (j < length(s)) and (s[j] in ['0'..'9']) do
    inc(j);
  result := copy(s, i+1, j-i-1);
end;



--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
aktuba
Дата 30.10.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Код

function GetCode(AURL: string): string;
var
  lPos: Integer;
begin
  Result := '';
  lPos := Pos('?', AURL);
  if lPos <= 0 then Exit;
  Inc(lPos);
  while (lPos <= Length(AURL)) and (AURL[lPos] >= '0') and (AURL[lPos] <= '9') do
    Result := Result + AURL[lPos]
end;


Писал в браузере - сильно не пинать. Соответственно - не оптимизировал. Можно проще - найти начало кода (?) и окончание ("), а после скопировать все между ними:
Код

function GetCode(AURL: string): string;
var
  lPos1, lPos2: Integer;
begin
  Result := '';
  lPos1 := Pos('?', AURL);
  lPos2 := Pos('"', AURL);
  if (lPos1 > 0) and (lPos2 > 0) and (lPos2 > lPos1) then
    Result := Copy(AURL, lPos1 + 1, lPos2 - lPos1 - 2);
end;



--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 30.10.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



а с пом. RegExpr можно красивше имхо)
Код

var
  lRE: TRegExpr;
begin
  lRE := TRegExpr.Create;
  try
    lRE.Expression := '\d+';
    if lRE.Exec( AExtractFromStr ) then
      AExtractedNumber := lRE.Match[0];
  finally
    lRE.Free;
  end;
end;



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
ishimcity
Дата 30.10.2007, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 1.6.2007
Где: Тюменская область . Ишим

Репутация: нет
Всего: 1



Спасибо друзья Alix и aktuba smile 
PM MAIL ICQ Skype YIM   Вверх
aktuba
Дата 30.10.2007, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата

а с пом. RegExpr можно красивше имхо)


Имхо, регулярки надо применять там, где они действительно нужны. А лишние 100кб для получения кода, как в данном случае, это зло...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
MetalFan
Дата 30.10.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



aktuba, тож верно) ну а вдруг у него еще понадобится что-то выцепить?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0743 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.