iOS: 从 UITextView 中提取检测到的数字和链接?
iOS: Extract detected numbers and links from UITextView?
This question 和类似的解决了如何检测 UITextView
.
中的 phone 数字和链接
一旦检测到,有没有办法提取检测到的号码和链接?
目标是使用 UITextView
检测数字和链接,而不是重建此逻辑。
澄清一下,理想的工作流程是:
- 用户在
UITextView
中输入文本。
UITextView
检测数字和链接。
- 从文本中提取数字和链接。
UITextView 实际上只是让用户可点击链接的数据检测过程更容易实现。如果您正在尝试提取和使用该数据,我可能会建议实施它来处理您的特定用例。幸运的是,数据检测非常简单。
let string = "www.google.com / (555) 123-4567"
let types: NSTextCheckingResult.CheckingType = [.phoneNumber, .link]
let detector = try NSDataDetector(types: types.rawValue)
let range = NSMakeRange(0, string.count)
detector.enumerateMatches(in: string, options: [], range: range) { result, _, _ in
print(result)
}
输出:
Optional(<NSLinkCheckingResult: 0x6000031264c0>{0, 14}{http://www.google.com})
Optional(<NSPhoneNumberCheckingResult: 0x600003f384b0>{17, 14}{(555) 123-4567})
This question 和类似的解决了如何检测 UITextView
.
一旦检测到,有没有办法提取检测到的号码和链接?
目标是使用 UITextView
检测数字和链接,而不是重建此逻辑。
澄清一下,理想的工作流程是:
- 用户在
UITextView
中输入文本。 UITextView
检测数字和链接。- 从文本中提取数字和链接。
UITextView 实际上只是让用户可点击链接的数据检测过程更容易实现。如果您正在尝试提取和使用该数据,我可能会建议实施它来处理您的特定用例。幸运的是,数据检测非常简单。
let string = "www.google.com / (555) 123-4567"
let types: NSTextCheckingResult.CheckingType = [.phoneNumber, .link]
let detector = try NSDataDetector(types: types.rawValue)
let range = NSMakeRange(0, string.count)
detector.enumerateMatches(in: string, options: [], range: range) { result, _, _ in
print(result)
}
输出:
Optional(<NSLinkCheckingResult: 0x6000031264c0>{0, 14}{http://www.google.com})
Optional(<NSPhoneNumberCheckingResult: 0x600003f384b0>{17, 14}{(555) 123-4567})