Swift 中对 String
类型的 substring()
方法都被标记为不推荐(deprecated)
了,那该如何实现 substring 的功能呢?
根据Xcode的提示可以使用slicing(切片)
的方式来实现substring
的功能:
以字符串 let str = "0123456789"
为例:
从开始到第一个等于5
的字符之前的子串:
|
|
从开头到第一个等于5
的字符
|
|
从第一个5
开始到字符串末尾
|
|
前7个字符
|
|
String
切片后返回的结果类型是 Substring
。
struct Substring
Substring
不会为字符串额外分配空间,而是与原始字符串共享存储。
划重点: 因为
Substring
会持有对原始字符存储的引用计数,所以要确保子串的生命周期不长于源字符串的生命周期,以免内存泄漏。