Swift 5中如何移除UITextView中输入的URL链接
移除UITextView中的URL链接
这里提供两种实用的实现方式,根据你的需求选择:
方法一:正则表达式批量替换
直接用正则匹配所有URL并替换为空,操作简单高效:
// 匹配HTTP/HTTPS开头或www开头的URL let urlPattern = #"https?://\S+|www\.\S+"# guard let regex = try? NSRegularExpression(pattern: urlPattern, options: .caseInsensitive) else { return } let fullTextRange = NSRange(location: 0, length: textView.text.utf16.count) let cleanedText = regex.stringByReplacingMatches( in: textView.text, options: [], range: fullTextRange, withTemplate: "" ) textView.text = cleanedText
方法二:遍历检测到的URL逐个删除
如果你已经能检测到URL,可通过遍历匹配结果(从后往前)来精准删除,避免位置偏移问题:
guard let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue) else { return } let matches = detector.matches( in: textView.text, options: [], range: NSRange(location: 0, length: textView.text.utf16.count) ) // 从后往前遍历,防止删除前面内容后后续range偏移 for match in matches.reversed() { if let urlRange = Range(match.range, in: textView.text) { textView.text.removeSubrange(urlRange) } }
注意:如果你的UITextView开启了富文本编辑,直接修改
text会清除富文本样式,若要保留样式,需操作textStorage对象来删除对应range的内容。
内容的提问来源于stack exchange,提问作者Selvasarathy Tamilselvan
相关产品推荐
相关产品推荐

