所以我有一个图像 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/