swift - 在 Swift 3 中,如何从包含许多此类字符的字符串中替换 URL 的单个字符?

标签 swift

所以我有一个图像 URL:

https://images.gr-assets.com/books/1410762334m/135625.jpg

我想将第一个数字 block (1410762334) 后面的字母 "m" 更改为字母 "l"

我尝试使用 replacingOccurrences(of: "m", with: "l", options: .literal, range: nil) ,正如预期的那样,它用 l 替换了所有 m,但事实并非如此。不工作。我知道这与范围有关,但我不确定将什么作为范围。请赐教:)

提前致谢!

最佳答案

为此,您应该使用NSRegularExpression

  • 首先,此代码搜索后跟字母 m 和斜线 (/) 的数值。
  • 之后,它仅在该范围内搜索 m 并将其替换为 l
<小时/>
let urlString: NSString = "https://images.gr-assets.com/books/1410762334m/135625.jpg"

do {
    let regex = try NSRegularExpression(pattern: "[0-9]m/", options: .caseInsensitive)

    let fullRange = NSMakeRange(0, urlString.length)
    let matchRange = regex.rangeOfFirstMatch(in: urlString as String, options: [], range: fullRange)

    let modString = urlString.replacingOccurrences(of: "m", with: "l", options: .caseInsensitive, range: matchRange)
} catch let error {
    //NSRegularExpression threw an error; handle it properly
    print(error.localizedDescription)
}

swift 4

let urlString = "https://images.gr-assets.com/books/1410762334m/135625.jpg"

do {
    let regex = try NSRegularExpression(pattern: "[0-9]m/", options: .caseInsensitive)

    let fullRange = NSMakeRange(0, urlString.count)
    let matchRange = regex.rangeOfFirstMatch(in: urlString, options: [], range: fullRange)

    let modString = urlString.replacingOccurrences(of: "m", with: "l", options: .caseInsensitive, range: Range(matchRange, in: urlString))
} catch let error {
    //NSRegularExpression threw an error; handle it properly
    print(error.localizedDescription)
}

关于swift - 在 Swift 3 中,如何从包含许多此类字符的字符串中替换 URL 的单个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46528536/

相关文章:

SwiftUI 动画外部绑定(bind)具有相同的 `withAnimation` 风格

ios - 如何在 ios swift 中点击时将警报中的图像显示为更大的图像

ios - 使用 alamofire json swift 3.0 在我的标签中打印 .get

ios - FFMPEG 创建模糊视频

ios - 如何允许用户通过 Firebase 在存储的个人资料中输入信息,而无需登录/注册?

ios - 日期格式化程序不适用于某些 iOS 设备

Swift 变量声明与可选(?)或强制解包(!)不同?

swift - swift 中的 Nil 合并运算符返回一个奇怪的结果

swift - 如何在 UITableView Swift 上禁用尾随滑动?

swift - 使用两个类创建协议(protocol)