2012-03-12 54 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/ – 2012-03-12 17:58:11

+0

爲什麼你所有的雙引號都逃脫了?它在源代碼中看起來是否真的如此? – 2012-03-12 18:55:20

回答

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

在名稱的第二 * 指數*將是你的路徑,但你需要削減其他部分 一個快速的方法是

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

路徑的第一個索引是你的答案

不完美的代碼示例,但它的作品:)

1

您的數據看起來不對,假設它代表一些XML字符串。假設它 XML,並且每個'參數'正確地以>結尾,您可以使用正則表達式來解析出必要的信息。我在下面顯示一些僞代碼,您可以根據自己的需要進行調整。請注意,此示例假定輸入字符串中可能有多個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 
} 

你可以閱讀更多關於Cocoa對documentation page正則表達式的支持。此外,請注意,使用XML解析器和XPath查詢來檢索此信息可能更合適,但在這種情況下,正則表達式可以很好地完成這項工作。

+0

不幸的是它是一些網站的HTML響應,我不得不從中提取這些媒體鏈接。謝謝 – deelayBa 2012-07-30 17:38:34