Swift:替换由多个分隔符分隔的字符串中的数值

Swift: Replace numeric value in string separated by multiple delimiters

我目前使用的 api 图像 url 字符串格式如下:

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

"px"前面的数值不一致,所以想把这个值换成静态的,以便加载相同大小的图片。

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

你是在正确的轨道上,具有如此特定的 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"

你能保证URL中'/'字符的数量吗?

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

returns 列表

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

因此,

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

returns 列表

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

这就是分解字符串的方法。您所要做的就是替换您想要的位并将其连接在一起。

您可以使用正则表达式:

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