2012-03-12 2 views
-1

У меня есть NSString вроде этого:Как извлечь определенное содержание из NSString

<param name=\"movie\" value=\"system/swf/miniplayer.swf\"> 
param name=\"FlashVars\" 
value=\"playerID=1&amp;soundFile=audios/programAudios/f37070041634e8d19316422e3ffad4c9.mp3\" 
<param name=\"quality\" value=\"high\" 
<param name=\"menu\" value=\"false\" 
<param name=\"wmode\" value=\"transparent\" 
<embed src=\"system/swf/miniplayer.swf\" width=\"180\" height=\"30\" 
flashvars=\"playerID=1&amp;soundFile=audios/programAudios/f37070041634e8d19316422e3ffad4c9.mp3\ 
quality=\"high\" menu=\"false\" wmode=\"transparent\"       ", 

Как извлечь аудиозаписей/programAudios/f37070041634e8d19316422e3ffad4c9.mp3?

+3

Что вы пытаетесь? http://mattgemmell.com/2008/12/08/what-have-you-tried/ –

+0

Почему все ваши двойные кавычки сбежали? Действительно ли это похоже на источник? –

ответ

0
NSArray *names = [nameString componentsSeparatedByString:@"soundFile="]; 

на второй индекс * имен * будет ваш путь, но вам нужно вырезать другую часть быстрый способ является то, что

NSArray *path = [nameString componentsSeparatedByString:@"\"]; 

на первый индекс пути - ваш ответ

Не идеальный пример кодирования, но он работает :)

1

Ваши данные выглядят не так, если они представляют собой некоторую строку XML. Предполагая, что это is XML и что каждый «param» правильно заканчивается >, вы можете использовать регулярные выражения для разбора необходимой информации. Я показываю ниже псевдокод, вы можете адаптировать его к вашим потребностям. Обратите внимание, что в этом примере предполагается, что во входной строке может быть несколько разделов soundFile.

NSString *data = @"param name=\"FlashVars\" value=\"playerID=1&amp;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 
} 

Вы можете прочитать больше о Какао для регулярных выражений на их documentation page. Кроме того, обратите внимание, что может быть более целесообразным использовать XML-парсер и запросы XPath для извлечения этой информации, но в этом случае регулярные выражения отлично справятся с этой задачей.

+0

К сожалению, это был html-ответ какого-то сайта, откуда мне пришлось извлечь эти медиа-ссылки. благодаря – deelayBa

Смежные вопросы