我有一个Youtube的URL字符串,希望从中提取视频ID。在Objective-C中,我找到了以下代码:
NSError *error = NULL;
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"?.*v=([^&]+)"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSTextCheckingResult *match = [regex firstMatchInString:youtubeURL
options:0
range:NSMakeRange(0, [youtubeURL length])];
if (match) {
NSRange videoIDRange = [match rangeAtIndex:1];
NSString *substringForFirstMatch = [youtubeURL substringWithRange:videoIDRange];
}
当我把这段代码转换成Swift 3时,就是这样:
var error: Error? = nil
var regex = try! NSRegularExpression(pattern: "?.*v=([^&]+)", options: .caseInsensitive)
var match = regex!.firstMatch(in: youtubeURL, options: [], range: NSRange(location: 0, length: youtubeURL.length))!
if match {
var videoIDRange = match.rangeAt(1)
var substringForFirstMatch = (youtubeURL as NSString).substring(with: videoIDRange)
}
出现错误:
致命错误:'try!'表达式意外地引发了一个错误:错误域=NSCocoaErrorDomain Code=2048 "The value “?.*v=([^&]+)” is invalid."
有人能帮我解决这个错误,或者有人能够解释如何在Swift 3中从URL获取视频ID吗。
谢谢提前。
https://www.twitch.tv/directory/all/tags/6ea6bca4-4712-4ab9-a906-e3336a9d8039
似乎会将directory
作为videoID返回。 - sudoExclaimationExclaimation