Ваши данные выглядят неправильно, если предположить, что они представляют собой некоторую строку XML. Предполагая, что это является XML и что каждый «param» правильно заканчивается на >
, вы можете использовать регулярные выражения для анализа необходимой информации. Ниже приведен псевдокод, вы можете адаптировать его под свои нужды. Обратите внимание, что в этом примере предполагается, что во входной строке может быть несколько soundFile
разделов.
NSString *data = @"param name=\"FlashVars\" value=\"playerID=1&soundFile=audios/programAudios/f37070041634e8d19316422e3ffad4c9.mp3>\"";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"(soundFile=)(.+)(>)"
options:NSRegularExpressionCaseInsensitive
error:&error];
if(error == NULL) {
NSLog(@"Number of capture groups: %lu\n", [regex numberOfCaptureGroups]);
NSArray *matches = [regex matchesInString:data options:0 range:NSMakeRange(0, [data length])];
for (NSTextCheckingResult *match in matches) {
NSRange rangeOfInterest = [match rangeAtIndex:2];
NSLog(@"Sound file: %@\n", [data substringWithRange: rangeOfInterest]);
}
} else {
// handle error
}
Подробнее о поддержке регулярных выражений в Cocoa можно прочитать на странице документации . Также обратите внимание, что для извлечения этой информации может быть более уместно использовать синтаксический анализатор XML и запросы XPath, но в этом случае регулярные выражения отлично справятся со своей задачей.