【问题标题】:Swift: Replace numeric value in string separated by multiple delimitersSwift:替换由多个分隔符分隔的字符串中的数值
【发布时间】:2017-11-28 22:48:02
【问题描述】:

我目前正在使用一个带有如下格式的图像 url 字符串的 api:

https://someExampleURL/18px-ImageName.png

“px”前面的数值不一致,因此我想用静态值替换这个值,以便加载相同大小的图像。

我正在考虑按字符“/”和“px”拆分字符串,并将字符串中的数值替换为“100”。实现这一目标的最佳策略可能是什么?

【问题讨论】:

  • @Xcoder 请不要尝试编辑问题或我的答案以将 URL 作为链接包含在内,因为 URL 实际上不起作用,但它是问答的重要组成部分它显示了请求的格式。

标签: swift string replace delimiter


【解决方案1】:

你可以使用正则表达式:

let link = "https://someexampleurl/18px-ImageName.png"
let newLink = link.replacingOccurrences(of: "/\\d+px", with: "/100px", options: .regularExpression)

【讨论】:

    【解决方案2】:

    您在正确的轨道上,使用这种特定的 URL 格式,您可以使用 components(separatedBy:) 将 URL 字符串按最后一个 / 字符拆分,其余部分按第一次出现的 px 拆分。如果您打算继续使用强制展开,请确保您的 URL 格式不会改变。

    检索图像大小后,您可以使用String.replacingCharacters(in:,with:) 将大小更改为新值。

    let newImageSize = "100"
    let imageUrlString = "https://someExampleURL/18px-ImageName.png"
    let imageSize = imageUrlString.components(separatedBy: "/").last!.components(separatedBy: "px").first!
    let modifiedImageUrlString = imageUrlString.replacingCharacters(in: imageUrlString.range(of: imageSize)!, with: newImageSize)
    

    结果:

    https://someExampleURL/100px-ImageName.png

    【讨论】:

      【解决方案3】:

      你能保证网址中“/”字符的数量吗?

      'https://someExampleURL/18px-ImageName.png'.split('/')
      

      返回列表

      ['https:', '', 'someExampleURL', '18px-ImageName.png']
      

      因此,

      'https://someExampleURL/18px-ImageName.png'.split('/')[3].split('px')
      

      返回列表

      ['18', '-ImageName.png']
      

      这就是拆线的方法。您所要做的就是替换您想要的位并将它们连接在一起。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-25
        • 2021-03-11
        • 2015-01-13
        • 2013-09-20
        相关资源
        最近更新 更多