парсим значения Возник вопрос. я хочу с парсить значения с исходного кода. Code: 'idi': '784167', если использовать так idi':=Copy(S, Pos('idi'', V)+7, 6); то касяк так как 784167 может состоять как из 6 так из 5 или 7 цифр попробовал через функцию Code: idi':=(Pars('от',S,'до')); от это - 'idi': ' до это- ', так нельзя подставить граници от до так как они содержат знак ' сама функция Code: 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; какие еще есть методы подскажите.
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);
ErrorNeo кстати да, можно же на вхождение в множество проверять. Я сначал объявлял переменную set of '0'..'9' так там оказывалось не то что я ожидал. Но твой способ вроде катит только на 5-6 цифр, остальное надо дописывать. Допустим если 10 цифр будет? Переделанный код с множествами
а я в своих программах не допускаю невозможных случаев=) если ТС сказал 5-7 символов, значит 5-7 символов! xD
'(?<id>[\w]+)'\s*:\s*'(?<number>[\d]+)' Вот и все. Что вы там очередные велосипеды придумываете? Если лимиты есть можно точнее ограничить '(?<id>[\w]+)'\s*:\s*'(?<number>[\d]{5,7})'
PHP: sText.Delete(1, sText.Pos("'idi':") + 6 - 1); sText.Delete(1, sText.Pos("'")); sText.SetLength(sText.Pos("'") - 1);