ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

парсим значения
  #1  
Старый 12.06.2010, 15:13
Аватар для akimov_aleks
akimov_aleks
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме:
38103

Репутация: 0
По умолчанию парсим значения

Возник вопрос.
я хочу с парсить значения с исходного кода.
Код:
'idi': '784167',
если использовать так
idi':=Copy(S, Pos('idi'', V)+7, 6);
то касяк так как 784167 может состоять как из 6 так из 5 или 7 цифр
попробовал через функцию
Код:
idi':=(Pars('от',S,'до'));
от это - 'idi': '
до это- ',
так нельзя подставить граници от до так как они содержат знак '
сама функция
Код:
function Pars(T_, ForS, _T: string): string;
var
  a, b: integer;
begin
  Result := '';
  if (T_ = '') or (ForS = '') or (_T = '') then
    Exit;
  a := Pos(T_, ForS);
  if a = 0 then
    Exit
  else
    a := a + Length(T_);
  ForS := Copy(ForS, a, Length(ForS) - a + 1);
  b := Pos(_T, ForS);
  if b > 0 then
    Result := Copy(ForS, 1, b - 1);
end;
какие еще есть методы подскажите.

Последний раз редактировалось akimov_aleks; 12.06.2010 в 15:45..
 
Ответить с цитированием

  #2  
Старый 12.06.2010, 16:08
Аватар для GhostOnline
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Цитата:
procedure TForm2.Button3Click(Sender: TObject);
var
s : string;
result : string;
i : Byte;
begin
s := '''idi'': ''7841671'',';
s := Copy(S, Pos('idi''', S)+7);
for I := 1 to Length(s) do
if (Ord(s[i]) >= 48) and (Ord(s[i]) <= 57) then
result := result + s[i]
else
Break;
ShowMessage(result);
end;
...

Последний раз редактировалось GhostOnline; 12.06.2010 в 16:11..
 
Ответить с цитированием

  #3  
Старый 12.06.2010, 16:15
Аватар для ErrorNeo
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию

idi:=Copy(S, Pos('idi'', V)+7, 7);
if not (idi[5] in ['0'..'9']) then setlength(idi,5) else
if not (idi[6] in ['0'..'9']) then setlength(idi,6);
 
Ответить с цитированием

  #4  
Старый 12.06.2010, 16:22
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

регэкспы?
 
Ответить с цитированием

  #5  
Старый 12.06.2010, 16:25
Аватар для GhostOnline
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

ErrorNeo кстати да, можно же на вхождение в множество проверять.
Я сначал объявлял переменную set of '0'..'9' так там оказывалось не то что я ожидал.
Но твой способ вроде катит только на 5-6 цифр, остальное надо дописывать.
Допустим если 10 цифр будет?
Переделанный код с множествами
Цитата:
s := Copy(S, Pos('idi''', S)+7);
for I := 1 to Length(s) do
if s[i] in ['0'..'9'] then
result := result + s[i]
else
Break;
ShowMessage(result);
 
Ответить с цитированием

  #6  
Старый 12.06.2010, 16:26
Аватар для ErrorNeo
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
Провел на форуме:
4297091

Репутация: 2261


Отправить сообщение для ErrorNeo с помощью ICQ
По умолчанию

а я в своих программах не допускаю невозможных случаев=)
если ТС сказал 5-7 символов, значит 5-7 символов! xD
 
Ответить с цитированием

  #7  
Старый 12.06.2010, 17:24
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

'(?<id>[\w]+)'\s*:\s*'(?<number>[\d]+)'

Вот и все. Что вы там очередные велосипеды придумываете?

Если лимиты есть можно точнее ограничить
'(?<id>[\w]+)'\s*:\s*'(?<number>[\d]{5,7})'
 
Ответить с цитированием

  #8  
Старый 12.06.2010, 18:03
Аватар для M_script_
M_script_
Постоянный
Регистрация: 29.10.2008
Сообщений: 306
Провел на форуме:
1819761

Репутация: 180
Отправить сообщение для M_script_ с помощью ICQ
По умолчанию

PHP код:
sText.Delete(1sText.Pos("'idi':") + 1);
sText.Delete(1sText.Pos("'"));
sText.SetLength(sText.Pos("'") - 1); 
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как задавать значения свойствам C# классов? _nic С/С++, C#, Delphi, .NET, Asm 2 04.05.2010 15:43
Руководство по «тонкой» настройке Firefox 2 SK | Heaton Статьи 0 09.11.2006 08:07
Евросеть vs МВД – бои местного значения novichok Новости мира "железа" 0 09.04.2006 11:34



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ