Swift 4 中的子字符串
Substrings in Swift 4
我有一个 url 字符串(假的)
http://fools.sayers.mine.cs/api/analytics/ces_ssn
我想创建一个新的 URL 字符串
http://fools.sayers.mine.cs/api/
我面临的问题是最后一个参数 ces_ssn
有时可以是 ces_fw
或 adv_let
之类的任何东西,所以我无法在我的代码中完全设置 endIndex。
有没有办法创建一个动态的函数,每次只给我前 32 个字符,不管 endIndex
你可以使用 prefix()
"http://fools.sayers.mine.cs/api/analytics/ces_ssn".prefix(32)
这适用于 Swift 4
var url = "http://fools.sayers.mine.cs/api/analytics/ces_ssn"
let newStr = url.prefix(32)
或者可能是完美的方式
if let index = url.range(of: "api/")?.upperBound {
let api = url.prefix(upTo: index)
}
例如,如果您的 URL 突然变成 https
而不是 http
,这听起来很容易出错。
相反,我会这样做:
let url = URL(string: "http://fools.sayers.mine.cs/api/analytics/ces_ssn")!
let components = url.pathComponents
let scheme = url.scheme!
let host = url.host!
let slash = components.removeFirst()
print (components) // ["api", "analytics", "ces_ssn"]
您感兴趣的组件是 0 和 1 组件,您可以像这样重构您的 URL:
let newURL = "\(scheme)://\(host)/\(components[0])/\(components[1])"
print (newURL) // "http://fools.sayers.mine.cs/api/analytics"
你有一个URL。使用 URL
。假设您知道要删除路径的最后两部分,您可以这样做:
let myURL = URL(string: "http://fools.sayers.mine.cs/api/analytics/ces_ssn")!
let shortURL = myURL.deletingLastPathComponent().deletingLastPathComponent()
print(shortURL)
输出:
我有一个 url 字符串(假的)
http://fools.sayers.mine.cs/api/analytics/ces_ssn
我想创建一个新的 URL 字符串
http://fools.sayers.mine.cs/api/
我面临的问题是最后一个参数 ces_ssn
有时可以是 ces_fw
或 adv_let
之类的任何东西,所以我无法在我的代码中完全设置 endIndex。
有没有办法创建一个动态的函数,每次只给我前 32 个字符,不管 endIndex
你可以使用 prefix()
"http://fools.sayers.mine.cs/api/analytics/ces_ssn".prefix(32)
这适用于 Swift 4
var url = "http://fools.sayers.mine.cs/api/analytics/ces_ssn"
let newStr = url.prefix(32)
或者可能是完美的方式
if let index = url.range(of: "api/")?.upperBound {
let api = url.prefix(upTo: index)
}
例如,如果您的 URL 突然变成 https
而不是 http
,这听起来很容易出错。
相反,我会这样做:
let url = URL(string: "http://fools.sayers.mine.cs/api/analytics/ces_ssn")!
let components = url.pathComponents
let scheme = url.scheme!
let host = url.host!
let slash = components.removeFirst()
print (components) // ["api", "analytics", "ces_ssn"]
您感兴趣的组件是 0 和 1 组件,您可以像这样重构您的 URL:
let newURL = "\(scheme)://\(host)/\(components[0])/\(components[1])"
print (newURL) // "http://fools.sayers.mine.cs/api/analytics"
你有一个URL。使用 URL
。假设您知道要删除路径的最后两部分,您可以这样做:
let myURL = URL(string: "http://fools.sayers.mine.cs/api/analytics/ces_ssn")!
let shortURL = myURL.deletingLastPathComponent().deletingLastPathComponent()
print(shortURL)
输出: