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

Swift中如何匹配并移除URL字符串内被括号包裹的数字?

iOS 括号包裹数字移除解决方案

原有代码问题

  • Swift 原生的 String.contains() 方法仅支持普通字符串匹配,无法识别正则表达式规则,你编写的正则判断条件永远不会触发
  • trimmingCharacters(in:) 仅会移除字符串首尾匹配字符集的字符,无法处理字符串中间出现的(数字)内容
  • 原有正则规则未适配多位数场景,无法匹配(12)这类多位数括号内容

正确实现

你可以直接使用支持正则匹配的字符串替换方法实现需求,同时监听输入框的内容变化事件实时处理输入内容:

  1. 核心字符串处理方法
/// 移除字符串中所有被括号包裹的数字
func removeBracketedNumbers(from input: String) -> String {
    // 正则规则:匹配左括号 + 1个及以上数字 + 右括号
    let pattern = "\\(\\d+\\)"
    return input.replacingOccurrences(of: pattern, with: "", options: .regularExpression)
}
  1. 绑定输入框实时处理
    在viewDidLoad中添加输入框内容变化监听:
urlField.addTarget(self, action: #selector(textFieldContentDidChange), for: .editingChanged)

实现监听回调方法:

@objc func textFieldContentDidChange(_ textField: UITextField) {
    guard let originalText = textField.text else { return }
    let processedText = removeBracketedNumbers(from: originalText)
    // 仅在内容有变化时赋值,避免无限触发监听回调
    if processedText != originalText {
        DispatchQueue.main.async {
            textField.text = processedText
        }
    }
}

效果验证

  • 输入stackoverflow.com(1),处理后输出stackoverflow.com
  • 输入abc(23)def(456)xyz,处理后输出abcdefxyz

内容的提问来源于stack exchange,提问作者MaryLitv21

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:48:03