iOS开发——Swift字符串替换 + HTML标签正则过滤 + 主线程非阻断延时

本文介绍如何在Swift中进行字符串替换操作,包括普通替换和正则表达式替换,并展示了如何通过正则表达式去除HTML标签。此外,还提供了一个在主线程上实现非阻塞延时动画的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

一.字符串替换

   单独替换:  

 

//原始字符串
let str1 = "LCLiOS"
//替换后的字符串
let str2 = str1.replacingOccurrences(of: "iOS", with: "嘿哈")
 
替换后的结果: LCL嘿哈
 

 

 

 

 

    正则表达式替换:

    1,先做个String拓展

     

extension String {
    // 1 返回字数
    var count: Int {
        let string_NS = self as NSString
        return string_NS.length
    }
     
    //使用正则表达式替换
    func pregReplace(pattern: String, with: String,
                     options: NSRegularExpression.Options = []) -> String {
        let regex = try! NSRegularExpression(pattern: pattern, options: options)
        return regex.stringByReplacingMatches(inself, options: [],
                                              range: NSMakeRange(0, self.count),
                                              withTemplate: with)
    }
}

 

     

        2,正则表达式替换方法

       

  

//原始字符串
let str1 = "欢迎来到aa"
//替换后的字符串
let str2 = str1.pregReplace(pattern: "[a-zA-Z]", with: "_")
 
将文本的字母替换成下划线,结果:
欢迎来到_ _ _ _

 

      

 

二.HTML标签正则过滤

      

    利用上面的String扩展类,去掉文本中HTML标签

 

 

  // 正则表达式替换字符串中html标签

 self.htmlString =  self.htmlString.pregReplace(pattern: "<[^>]*>", with: "")  

  // Stringl类单独字符串替换空格标签

 self.htmlString =  self.htmlString.replacingOccurrences(of: "&nbsp;", with: "")

 

 

 

 

三.主线程非阻断延时

     

     简单的一行代码:

 

 DispatchQueue.main.asyncAfter(deadline: .now() + TimeInterval(0.5)) {

            

            

            // 延时0.5秒后执行的动画

            let animation = CABasicAnimation.init(keyPath: "transform.scale")

            animation.duration      = 0.2

            animation.repeatCount   = 0

            animation.autoreverses  = false

            

            animation.fromValue = NSNumber.init(value: 0.1)

            animation.toValue   = NSNumber.init(value: 1)

            

            self.openBtn.layer.add(animation, forKey: "scale-layer")

            self.loginBtn.layer.add(animation, forKey: "scale-layer")

            

            

        }

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值