要求

为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)

swift 3.0 基础练习 面向对象 类的扩展的更多相关文章

  1. swift 3.0 基础练习 面向对象 类

    模拟需求 创建100个女朋友 1.用面向对象思想 2.名字随机 3.年龄随机 4.拥有约会功能 5.将所有女朋友信息输出 class GirlFirend: NSObject { var name:S ...

  2. iOS开发swift语法0基础篇—————(swift技术交流群:361513739)

    iOS开发之swift语法0基础篇:点击打开链接  swift技术交流QQ群361513739

  3. Java基础语法 - 面向对象 - 类的主方法main方法

    主方法是类的入口点,它指定了程序从何处开始,提供对程序流向的控制.Java编译器通过主方法来执行程序. 主方法的语法如下: /* a.主方法是静态的,如果要直接在主方法中调用其它方法,则该方法必须也是 ...

  4. Python 基础之面向对象类的继承与多态

    一.继承 定义:一个类除了拥有自身的属性方法之外,还拥有另外一个类的属性和方法继承: 1.单继承 2.多继承子类: 一个类继承了另外一个类,那么这个类是子类(衍生类)父类:一个类继承了另外一个类,被继 ...

  5. swift3.0基础语法

    swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...

  6. 图解Python 【第五篇】:面向对象-类-初级基础篇

    由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节主要讲基础和面向对象的特性 本节内容一览图: 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 ...

  7. Swift 3.0 令人兴奋,但Objective-C也有小改进--Objective-C的类属性

    由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动.或许你会觉得苹果提及Objective-C 很可能是为了提高和Swift互操作性(译者注:互操作性主 ...

  8. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  9. Python 基础之面向对象初识与类的封装

    一.面向对象类的初识 1.类的定义 #三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(obj ...

随机推荐

  1. Akka(8): 分布式运算:Remoting-远程查找式

    Akka是一种消息驱动运算模式,它实现跨JVM程序运算的方式是通过能跨JVM的消息系统来调动分布在不同JVM上ActorSystem中的Actor进行运算,前题是Akka的地址系统可以支持跨JVM定位 ...

  2. ecshop图片上传JPEG格式失败问题

    在根目录下找到includes文件目录,在其目录中找到cls_image.php打开并找到: $allow_file_types = '|GIF|JPG|JEPG|PNG|BMP|SWF|'; 此处J ...

  3. Testlink安装步骤Checking if C:\inetpub\wwwroot\testlink-1.9.3\gui\templates_c directory is writable Failed !

    Testlink安装过程中问题现象: Checking if C:\inetpub\wwwroot\testlink-1.9.3\gui\templates_c directory is writab ...

  4. 中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法)

    <?php //中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法) /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300, ...

  5. XMLHttpRequest函数封装

    XMLHttpRequest函数封装: function ajax(Url,sccuessFn,failureFn) { //1.创建XMLHttpRequest对象 var xhr = null; ...

  6. CNN中的卷积核及TensorFlow中卷积的各种实现

    声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...

  7. Swift开发常用知识点

    #pragma mark - as/类型转换as? / as! 需要根据前面的返回值决定 有?证明可选,可能为空:需要弱解包 没有?证明一定有值:大胆解包 as? 前面的结果是可选的 if let / ...

  8. C#深入学习 ----多线程学习(一)第一天学习

    学习最好的方法就是总结,并写下来,能让别人看懂,自己肯定是掌握了的. 针对软件开发,一直停留在能做的层次,今天得到大牛指点,觉得有必要对这门技术深入学习. 翻阅园内各大神的文章,收益匪浅,在这里做下总 ...

  9. diy toy: image auto-handler

    备忘之:) config.xml <?xml version="1.0" encoding="utf-8"?> <config> < ...

  10. 读书共享 Primer Plus C-part 8

    第十三章 文件输入/输出 fopen--fclose fopen 是文件的操作的开始 fclose是文件操作的结束 getc--putc getchar--putchar getc对应文件的获取单个字 ...