zoukankan      html  css  js  c++  java
  • swift 3.0 基础练习 面向对象 类的扩展

    要求
    为NSString类添加split功能
    为NSString类添加一个函数func split(splitStr: NSString)-> [NSString],split是把字符串以特定的字符或者字符串做为分割符将字符串分割的功能 (不用自带的分割功能)

    extension NSString{
        
        //split是把字符串以特定的字符或者字符串做为分割符将字符串分割的功能
        func split(splitStr: NSString)-> [NSString] {
            
            //定义截取后的字符串
            var lastStr = self
            var res:[NSString] = []
            
            //遍历整个字符串,最坏的情况为 字符串全为同一个字符
            for _ in 0..<self.length {
     
                //获取splistStr在字符串中的位置
                let strRange = lastStr.range(of: splitStr as String)
                
                //判断长度 为0 则将截取后的字符串直接添加到结果数组中 
                //不为0 则继续截取
                if strRange.length != 0 {
    
                    //从头一直截取到关键词
                    let subStr = lastStr.substring(to: strRange.location)
                    
                    //添加到结果数组中
                    res.append(subStr as NSString)
                    
                    //从关键词后开始截取
                    lastStr = lastStr.substring(from: strRange.location + splitStr.length) as NSString
                }
                else{
                    
                    res.append(lastStr)
                    //返回没有空值的结果
                    return removeNullValue(str: res)
                }
            }
            return []
        }
        
        //移除空元素
        func removeNullValue(str:[NSString]) -> [NSString] {
            var res:[NSString] = []
            for i in 0..<str.count {
                if str[i] != "" {
                    res.append(str[i])
                }
            }
            return res
        }
    }
    

    来测试下代码

    var str = "helloaooaaaaaorld"
    
    var result = str.split(splitStr: "ao")
    
    print("result =  ",result)
    

    exten.png

  • 相关阅读:
    题解——栈(卡特兰递归数的应用)
    题解——主的赦免(递归的进一步理解)
    sql开窗函数 row_number () over(order by id )
    c# resources
    Fillder 转载
    用javascript实现控制打开网页窗口的大小 和HTML如何关闭窗口的技巧大全
    datatable 与dataview的区别
    Asp.net中DataBinder.Eval用法的总结
    FrameSet左右收缩编码
    ajax get post
  • 原文地址:https://www.cnblogs.com/gongxiaokai/p/7123803.html
Copyright © 2011-2022 走看看