【问题标题】:Remove the existing string and append a new string for that string删除现有字符串并为该字符串附加一个新字符串
【发布时间】:2021-11-06 03:04:56
【问题描述】:

我有一个这样的视频网址

urldomain.com/livestream_id/PLAYER_WIDTH&PLAYER_HEIGHT&IDFA_ID&DEVICE_ID

如果视频 URL 包含 PLAYER_WIDTH&PLAYER_HEIGHT,那么我必须用这个 &sd=1960*1080 替换这个字符串,如果它不包含 IDFA_ID,那么我必须从 URL 中删除它,如果它包含 @987654326 @ 所以我必须用这个device_id="myDeviceid" 替换 DEVICE_ID。

所以我的最终到达网址看起来像这样

urldomain.com/livestream_id/?sd=1960*1080&deviceId="myDeviceid"

谁能告诉我该怎么做。

【问题讨论】:

  • 你可以看看这些例子和解释:docs.swift.org/swift-book/LanguageGuide/… 有一些关于如何插入和删除字符串和字符的例子,还有一个关于子字符串的部分。
  • 我有多个参数,我可以为此使用字典还是您有其他想法?
  • 在您的用例中是否可以将字符串分解为组件?然后,您可以在视频播放器大小和设备 ID 上运行函数。它可能类似于:let url = "urldomain.com/livestream_id(getPlayerSize()&(getDeviceID()))"。然后,如果存在,这些函数中的每一个都可以返回适当的字符串。

标签: swift string swift3 uikit


【解决方案1】:

无需替换字符串中的子字符串。您应该使用URLComponents 来编写您的URL。这样您就不必手动对字符串进行百分比编码。

var components = URLComponents()
let scheme = "https"
let host = "urldomain.com"
let path = "/livestream_id/"
let sd = "1960*1080"
let deviceId = "myDeviceid"
let sdItem =  URLQueryItem(name: "sd", value: sd)
let deviceIdItem =  URLQueryItem(name: "device_id", value: deviceId)
components.scheme = scheme
components.host = host
components.path = path
components.queryItems = [sdItem, deviceIdItem]
if let url = components.url {
    print(url.absoluteString)  // https://urldomain.com/livestream_id/?sd=1960*1080&device_id=myDeviceid
}

要自定义最终 url,您可以检查您的字符串是否包含关键字,如果为真,只需将查询项附加到组件 queryItem 属性。比如:

let urlString = "urldomain.com/livestream_id/PLAYER_WIDTH&PLAYER_HEIGHT&IDFA_ID&DEVICE_ID"
components.queryItems = []
if urlString.contains("PLAYER_WIDTH&PLAYER_HEIGHT") {
    components.queryItems?.append(sdItem)
}
if urlString.contains("DEVICE_ID") {
    components.queryItems?.append(deviceIdItem)
}

【讨论】:

    猜你喜欢
    • 2019-09-30
    • 2015-09-01
    • 2019-07-19
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多