在NSArray中编辑已解析的URL

时间:2012-01-08 00:55:27

标签: iphone ios url xpath

我正在开发一个应用程序,其中一个页面显示了一个网站博客....我已将所有内容解析为数组以加载到UITableView中。我想在TableView单元格中显示来自YouTube视频的缩略图...但是解析后的代码只包含视频的嵌入代码....

Soo ......问题是如何才能采取类似的措施:

http://www.youtube.com/v/videoID?version=3&feature=player_detailpage

并将其更改为:

http://img.youtube.com/vi/videoID/1.jpg

或者可能只是一种解析videoID加载到具有正确周围URL的字符串的方法?类似的东西:

search:@"//embed/[onlytakethevideoID]"

提前致谢!

3 个答案:

答案 0 :(得分:1)

从URL中获取子字符串是一种脆弱的方法,因为Google可以随时更改其URL方案。

相反,请考虑创建一个NSURL对象并从中获取pathComponents数组。该路径包含您的视频ID,可用于构建新网址:

NSURL *myURL = [NSURL URLWithString:@"http://www.youtube.com/v/videoID?version=3&feature=player_detailpage"];
NSArray *myURLPathComps = [myURL pathComponents];
NSString *myVideoID = [myURLPathComps objectAtIndex:[myURLPathComps count]-1];
NSURL *myNewURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://img.youtube.com/vi/%@/1.jpg", myVideoID]];

我想你会发现这不太可能打破。谷歌可以更改他们的URL主机,方案等,但只要视频ID在路径的同一部分,你应该没问题。

答案 1 :(得分:0)

您似乎要问的是如何提取视频ID。我不知道YouTube的网址方案,但如果它与您上面发布的内容一样,您只需从字符串中提取字符26到(26 + lengthOfVideoID)并构建一个新字符串,如下所示:

NSRange   videoIDRange = { 26, 26 + kVideoIDLength };
NSString* videoID = [youTubeLink substringWithRange:videoIDRange];
NSString* newURL = [NSString stringWithFormat:@"http://img.youtube.com/vi/%@/1.jpg", videoID];

这就是你要找的东西吗?

答案 2 :(得分:0)

视频IF字符串可以作为评估单个XPath表达式的结果获得

substring-before(substring-after($theUrl, 'http://www.youtube.com/v/'),
                 '?'
                 )

$theUrl应替换为实际的网址。