gpt4 book ai didi

ios - 如何找到 UITextView 中的第一个 URL?

转载 作者:行者123 更新时间:2023-11-28 05:49:22 24 4
gpt4 key购买 nike

我有一个 UITextView 实现为:

let textView = UITextView()
textView.isEditable = false
textView.dataDetectorTypes = .link

我知道将数据检测器类型设置为链接意味着 TextView 将自动查找链接、突出显示它们并超链接它们(使它们可点击)。

我想弄清楚的是如何知道 UITextView 是否找到至少一个 URL,并以编程方式对第一个 URL 执行某些操作。我考虑过使用正则表达式来尝试查找常见的 URL 格式,但我希望与 Apple 进行检测的方式保持一致。

有没有办法从 attributedText 中提取 URL,或者有更简单的方法吗?

我认为可以用这样的方式来完成:

textView.attributedText.attribute(.link, at: 0, effectiveRange: 0..textView.text.count)

最佳答案

您可以像下面这样使用 NSDataDetector:

let text = "I usually search stuff on stackoverflow.com to find answers"
if let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) {

let matches = detector.matches(in: text, options: [], range: NSRange(location: 0, length: text.utf16.count))

for match in matches {
guard let range = Range(match.range, in: text) else { continue }
let url = text[range]
print(url) // > stackoverflow.com
// Here is the place where you can count your URLs or do whatever you want with it
}

}

注意:- Swift 4 中提供的示例- 如果文本较长,可能会影响性能- 此代码未使用表情符号和复杂字形进行测试,因此您可能应该这样做。


阅读更多 Official NSDataDetector docs

关于ios - 如何找到 UITextView 中的第一个 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53442609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com