在字符串中查找网站地址并转换为URL链接

时间:2018-04-19 10:42:02

标签: ios swift string web

我有一个可以显示网站地址的字符串。我想将网站地址显示为链接。我该怎么做呢? 实施例

label.text = "Hello and welcome to stackoverflow.  The website is https://stackoverflow.com/questions/ask"

let input = label.text
    let detector = try! NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
    let matches = detector.matches(in: input!, options: [], range: NSRange(location: 0, length: (input?.utf16.count)!))

    for match in matches {
        guard let range = Range(match.range, in: input!) else { continue }
        let url = input![range]

        print(url)
    }

我可以打印https://stackoverflow.com/questions/ask但是,我不知道如何将其转换为链接,同时将其他文本保留在字符串中。

2 个答案:

答案 0 :(得分:0)

您可以将NSAttributedString用于此

let attributedString = NSMutableAttributedString(string: ".  The website is")
attributedString.addAttribute(.link, value: "https://stackoverflow.com/questions/ask", range: NSRange(location: 19, length: 55))

textView.attributedText = attributedString

func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool {

     UIApplication.shared.open(URL, options: [:])
     return false
 }

答案 1 :(得分:0)

这很简单。

我将UILabel改为UITextView。然后,它会收集所有电子邮件,URL等。

在“属性”检查器中 我在数据检测器中添加(点击)电话号码,链接和地址。 然后取消选择可编辑并保持可选择激活。