Swift 索引(encodedOffset:)做什么?如何替换它?
我使用的代码引发以下错误: initencodedOffset:'已弃用:encodedOffset已弃用,因为最常见的用法不正确。使用String.Indexutf16Offset:in:实现相同的行为 这实际上是做什么的?我如何替换它?有没有更简单的方法来实现这个字符串格式Swift 索引(encodedOffset:)做什么?如何替换它?,swift,swift5,Swift,Swift5,我使用的代码引发以下错误: initencodedOffset:'已弃用:encodedOffset已弃用,因为最常见的用法不正确。使用String.Indexutf16Offset:in:实现相同的行为 这实际上是做什么的?我如何替换它?有没有更简单的方法来实现这个字符串格式 extension String { func applyPatternOnNumbers(pattern: String, replacmentCharacter: Character) -> Strin
extension String {
func applyPatternOnNumbers(pattern: String, replacmentCharacter: Character) -> String {
var pureNumber = self.replacingOccurrences( of: "[^0-9]", with: "", options: .regularExpression)
for index in 0 ..< pattern.count {
guard index < pureNumber.count else { return pureNumber }
let stringIndex = String.Index(encodedOffset: index)
let patternCharacter = pattern[stringIndex]
guard patternCharacter != replacmentCharacter else { continue }
pureNumber.insert(patternCharacter, at: stringIndex)
}
return pureNumber
}
}
String.IndexEncodeOffset:将整型索引转换为String.index索引
建议的替代方案很简单
let stringIndex = String.Index(utf16Offset: index, in: pattern)
但将Int转换为String.Index前后转换是相当麻烦的
这只使用String.Index
非常感谢。是否真的没有更简单的方法来正则化字符串,例如电话号码?如果您详细描述代码应该做什么,这将很有帮助。要将电话号码的字符串正则化,请查看NSDataDetector
extension String {
func applyPatternOnNumbers(pattern: String, replacmentCharacter: Character) -> String {
var pureNumber = self.replacingOccurrences( of: "[^0-9]", with: "", options: .regularExpression)
for index in pattern.indices {
guard index < pureNumber.endIndex else { return pureNumber }
let patternCharacter = pattern[index]
guard patternCharacter != replacmentCharacter else { continue }
pureNumber.insert(patternCharacter, at: index)
}
return pureNumber
}
}