You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:01:06