Swift 中的Range和NSRange不同
2015-09-30 22:18
295 查看
Swift中的Ranges和Objective-C中的NSRange有很大的不同,我发现在处理Swift中Ranges相关的问题的时候,总是要花费比我想象的更多的时间。不过,现在回过头来看看,发现Swift中的Ranges的使用还是比较合理的,但是想要正确的使用Ranges真的需要一些特别的技巧。
看一个例子,下面这段代码展示的是截取以指定的字符开头和以指定的字符结尾的子字符串:
?
你可以看到,不能通过指定开始结束的Int值来获取Range,需要使用String类的startIndex和endIndex属性(String.startIndex的类型不是Int),这就是Swift Ranges特别的地方。
若想获取一个超出startIndex范围的Range,你可以使用上述代码里用到的advance的函数。advance也可以用于从结尾开始计算,所以如果你需要相对于endIndex获取index,像下面的代码一样,使用一个负数即可:
?
不得不说,细细思量,Swift对于Ranges的使用十分干净和优雅,只要你熟悉了它的用法。
看一个例子,下面这段代码展示的是截取以指定的字符开头和以指定的字符结尾的子字符串:
?
若想获取一个超出startIndex范围的Range,你可以使用上述代码里用到的advance的函数。advance也可以用于从结尾开始计算,所以如果你需要相对于endIndex获取index,像下面的代码一样,使用一个负数即可:
?
相关文章推荐
- swift学习笔记之数组与字典
- 自学swift的数组和字典
- Swift VS OC (有奖金哦!)
- Swift使用NSKeyedArchiver进行数据持久化保存的经验
- iOS代码规范(Swift 与 OC 混编版)
- Swift_UIImagePickerController选择图片显示
- Swift学习- 方法(十一)
- 2.Swift初探-基本语法
- 《从零开始学Swift》学习笔记(Day 19)——函数参数传递
- 《从零开始学Swift》学习笔记(Day 19)——函数参数传递
- swift基础篇:视图控制器UIViewControler
- swift关于UIView设置frame值的extension
- iOS swift-2 (元组)
- iOS swift-1
- 《从零开始学Swift》学习笔记(Day 18)——有几个分支语句?
- Swift学习-属性(十)
- Swift编程语言学习1.3——类型安全和投机型
- Swift学习-类和结构体(九)
- Swift数据类型-可选类型
- Swift 2.0实战:如何实现从非零下标遍历数组?