## Swift 字符串之 String.index 和 range
```
var str = "hello, swift"
let startIndex = str.startIndex // 指向字符串最开始的索引
let endIndex = str.endIndex // 指向字符串结束的索引
str[startIndex] // 截取字符串第 0 位的字符
str[str.index(startIndex, offsetBy: 5)] // 截取字符串第 5 位的字符 为:","
// 获取空格
let spaceIndex = str.index(startIndex, offsetBy: 6)
str[spaceIndex]
// 如果想寻找一个String.Index的前驱和后继,需要使用String.index(before:)和String.index(after:)方法
str[str.index(before: spaceIndex)]
str[str.index(after: spaceIndex)]
// 获取最后的字符
str[str.index(before: endIndex)]
// 获取字符范围
str[startIndex ..< spaceIndex] // 从开始截取到空白字符
let range = startIndex ..< str.index(before: spaceIndex)
// 字符串替换(改变原字符串)
str.replaceSubrange(range, with: "Hi")
// 字符串追加(改变原字符串)
str.append("!!!")
// 字符串插入(改变原字符串)
str.insert("?", at: str.endIndex)
// 字符串删除(不改变原字符串)
str.remove(at: str.index(before: endIndex))
// 反向截取(改变原字符串)
str.removeSubrange(str.index(endIndex, offsetBy: -2) ..< str.endIndex)
```
- 学习笔记
- 基础
- 基本类型之整型
- 基本类型之浮点型
- 基本类型之布尔类型以及简单的 if 语句
- 基础类型之元组
- 基本类型之其他
- 运算符
- 基础运算符
- 比较运算符、逻辑运算符
- 三元运算符
- 范围运算符for-in
- 逻辑控制
- 循环结构
- 选择结构
- 字符串
- Character和Unicode
- String.index 和 range
- 可选型
- 容器类
- 数组初始化
- 数组基本操作
- 字典初始化
- 字典基本操作
- 集合初始化
- 集合基本操作
- 函数
- 闭包
- 枚举
- 结构体
- 类
- 文档注释
- 属性和方法
- 下标和运算符重载
- 拓展和泛型
- 协议
- 其他
- Swift 3.0 For 循环
- Swift 随机数的生成
- IOS开发玩转界面 UIKit
- UILable 文本显示控件
- UIButton 简单的交互控件
- UIImageView 图片控件
- UISearchBar 搜索控件