如何从Swift 3中的URL中提取字符串?

问题描述 投票:0回答:4

我有一个YouTube视频的网址。现在,我需要提取一个字符串并将其保存到变量中。在这里,我需要从URL中提取videoid。链接是:

https://www.youtube.com/watch?v=iTcq6L-PaDQ

现在,我需要在Swift 3中提取iTcq6L-PaDQ

string url swift3
4个回答
0
投票

Swift 3.0

您可以从下面的String Url获取视频ID作为子字符串。

let url = URL(string: "https://www.youtube.com/watch?v=iTcq6L-PaDQ" )!.absoluteString

let Id = url.substring(from: url.range(of: "?v=")!.upperBound)

2
投票

URLComponents / URLQueryItem的现代解决方案

if let urlComponents = URLComponents(string:"https://www.youtube.com/watch?v=iTcq6L-PaDQ"),
    let queryItem = urlComponents.queryItems?.first(where: {$0.name == "v"}) {
    print(queryItem.value!)
}

或作为功能

func queryValue(for name : String, of url: URL) -> String?
{
    guard let urlComponents = URLComponents(url:url, resolvingAgainstBaseURL:false),
        let queryItem = urlComponents.queryItems?.first(where: {$0.name == name}) else { return nil }
    return queryItem.value
}

queryValue(for: "v", of: URL(string:"https://www.youtube.com/watch?v=iTcq6L-PaDQ")!)

1
投票

您可以按照此示例操作

let url = ___Your_URL_HERE____
let path = String(contentsOf: url)
let startIndex = path.index(path.startIndex, offsetBy: 32) //32 because 'https://www.youtube.com/watch?v=' is fixed from youtube
let videoid = path.substring(from: startIndex)
print(videoid)

0
投票

您可以将网址字符串分隔为“?v =”,这对于任何YouTube视频都是常见的。

let path = URL(string: "https://www.youtube.com/watch?v=iTcq6L-PaDQ")
let url = path!.absoluteString
let array = url.components(separatedBy: "?v=")
let id = array[1]
NSLog("video id: %@.", id)
© www.soinside.com 2019 - 2024. All rights reserved.