Iphone 在NSArray中编辑解析的URL

Iphone 在NSArray中编辑解析的URL,iphone,ios,url,xpath,Iphone,Ios,Url,Xpath,我正在开发一个应用程序,其中一个页面显示一个网站博客……我已经将所有内容解析成数组,加载到UITableView中。理想情况下,我希望在TableView单元格中显示YouTube视频的缩略图…但是解析的代码只包含视频的嵌入代码 苏…问题是我怎么能接受这样的东西: http://www.youtube.com/v/videoID?version=3&feature=player_detailpage search:@"//embed/[onlytakethevideoID]" 并将其

我正在开发一个应用程序,其中一个页面显示一个网站博客……我已经将所有内容解析成数组,加载到UITableView中。理想情况下,我希望在TableView单元格中显示YouTube视频的缩略图…但是解析的代码只包含视频的嵌入代码

苏…问题是我怎么能接受这样的东西:

http://www.youtube.com/v/videoID?version=3&feature=player_detailpage
search:@"//embed/[onlytakethevideoID]"
并将其更改为:

http://img.youtube.com/vi/videoID/1.jpg
或者可能是一种只解析videoID以加载到具有正确周围URL的字符串中的方法?比如:

http://www.youtube.com/v/videoID?version=3&feature=player_detailpage
search:@"//embed/[onlytakethevideoID]"

提前谢谢

看来你要问的是如何提取视频ID。我不知道YouTube的url方案,但如果它与您在上面发布的内容类似,您可以从字符串中提取字符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];

这就是你要找的吗?

看起来你要问的是如何提取视频ID。我不知道YouTube的url方案,但如果它与您在上面发布的内容类似,您可以从字符串中提取字符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];

这就是你想要的吗?

从URL获取子字符串是一种脆弱的方法,因为谷歌可以随时更改他们的URL方案

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

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位于路径的同一部分,你就可以了。

从URL获取子字符串是一种脆弱的方法,因为谷歌可以随时更改他们的URL方案

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

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]];

我想你会发现,这是不太可能打破。Google可以更改其URL主机、方案等,但只要视频ID位于路径的同一部分,您就可以了。

可以通过计算单个XPath表达式来获得视频ID字符串:

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

其中,
$Url
应替换为实际Url。

通过计算单个XPath表达式,可以获得视频ID字符串:

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

其中,
$Url
应替换为实际的Url。

只是一个平头…,使用{26,26+kVideoIDLength}返回26到37(kVideoIDLength=11)。将范围更改为{26,11}返回了正确的范围。再次感谢!哎呀!很抱歉。好主意。如果谷歌明天改变他们的URL格式,这样这个范围就不再有效了,你会怎么做?这对他们提出的任何方案都不会是一个问题吗?他们可以改变这一点。除非他们有办法让你给他们传递一个URL并让他们从中提取ID,否则我不确定我是否能找到一种方法来完全证明这一点。他们确实有一个可能有用的方法。不过我对此一无所知。只是提醒一下……使用{26,26+kVideoIDLength}返回26到37(kVideoIDLength=11)。将范围更改为{26,11}返回了正确的范围。再次感谢!哎呀!很抱歉。好主意。如果谷歌明天改变他们的URL格式,这样这个范围就不再有效了,你会怎么做?这对他们提出的任何方案都不会是一个问题吗?他们可以改变这一点。除非他们有办法让你给他们传递一个URL并让他们从中提取ID,否则我不确定我是否能找到一种方法来完全证明这一点。他们确实有一个可能有用的方法。不过,我对此一无所知。这就是我最终使用的方法。在我的URL中使用不同的视频ID长度会更好一些…谢谢!这就是我最终使用的方法。在我的URL中使用不同的视频ID长度会更好一些…谢谢!