Несколько подстрок в строке - PullRequest
0 голосов
/ 01 июля 2011

Я работаю над приложением, которое отображает 6 фотографий с веб-сайта. Эти картинки со временем меняются, поэтому я извлек исходный код указанного веб-сайта, и мне удалось получить первое из 6 изображений с этим кодом:

NSError *error = nil;
NSString *deviantStringPopular;
deviantStringPopular = [NSString stringWithContentsOfURL:[NSURL     URLWithString:@"http://browse.deviantart.com/?order=24"]
                                         encoding:NSISOLatin1StringEncoding
                                            error:&error];
NSString *popularContent;
NSRange popularURLRange1 = [deviantStringPopular rangeOfString:@"super_img=\""];
NSRange popularURLRange2 = [deviantStringPopular rangeOfString:@"\" super_w"];
int lengt = popularURLRange2.location - popularURLRange1.location -     popularURLRange1.length;
int location = popularURLRange1.location + popularURLRange1.length;
NSRange endRange;
endRange.location = location;
endRange.length = lengt;
popularContent = [deviantStringPopular substringWithRange:endRange];
NSLog(@"%@", popularContent);

Проблема в том, что URL-адреса других 5 изображений находятся между теми же подстроками, что и первая. Возможно ли, чтобы URL первого изображения игнорировался после успешной загрузки, а второй загружался и сохранялся в другой переменной и т. Д.?

спасибо заранее

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

Более простым решением может быть использование RegexKit , если вы знаете, как использовать RegEx. Тогда каждый URL может быть просто группой захвата.

0 голосов
/ 01 июля 2011

Чтобы получить 6 URL-адресов из строки и загрузить их в различные переменные, вы можете попробовать использовать цикл.На каждой итерации, после того как подстрока найдена и сохранена в переменной, задайте диапазон от начала строки до конца найденной подстроки.Вы можете использовать stringByReplacingCharactersInRange, чтобы стереть часть строки, которую уже искали, чтобы в следующий раз, когда вы будете искать в строке подстроку, он нашел следующий URL.

...