字符串String在 Swift 4中已无advanced(by:)或.advancedBy(:)

Swift4 斯威夫特 4

字符串在 Swift 4 中得到了很大的改进.当你现在从字符串中获取一些子字符串时,你会返回一个 Substring 类型而不是 String.为什么是这样?字符串是 Swift 中的值类型.这意味着如果你使用一个 String 来创建一个新的,那么它必须被复制.这有利于稳定性(没有其他人会在您不知情的情况下对其进行更改),但对效率不利.

另一方面,子字符串是对它来自的原始字符串的引用.这是 .子字符串(作为一种类型)是短暂的.

Swift 4 的另一个重大改进是字符串是集合(再次).这意味着无论您可以对 Collection 做什么,您都可以对 String 做(使用下标、迭代字符、过滤器等).

以下示例展示了如何在 Swift 中获取子字符串.

获取子串

您可以使用下标或许多其他方法(例如,prefixsuffixsplit)从字符串中获取子字符串).不过,您仍然需要对范围使用 String.Index 而不是 Int 索引.(如果您需要帮助,请参阅我的其他答案.)

字符串的开头

您可以使用下标(注意 Swift 4 的单边范围):

let index = str.index(str.startIndex, offsetBy: 5)
let mySubstring = str[..<index]//你好

前缀:

let index = str.index(str.startIndex, offsetBy: 5)
let mySubstring = str.prefix(upTo: index)//你好

甚至更简单:

let mySubstring = str.prefix(5)//你好

字符串结束

使用下标:

let index = str.index(str.endIndex, offsetBy: -10)
let mySubstring = str[index...]//游乐场

后缀:

let index = str.index(str.endIndex, offsetBy: -10)
let mySubstring = str.suffix(from: index)//操场

甚至更简单:

let mySubstring = str.suffix(10)//操场

请注意,在使用 suffix(from: index) 时,我必须使用 -10 从末尾开始倒数.仅使用 suffix(x) 时不需要这样做,它只需要字符串的最后一个 x 字符.

字符串中的范围

我们再次在这里简单地使用下标.

let start = str.index(str.startIndex, offsetBy: 7)
让 end = str.index(str.endIndex, offsetBy: -6)
让范围=开始..<结束let mySubstring = str[range]//播放

Substring 转换为String

不要忘记,当您准备保存子字符串时,您应该将其转换为String,以便可以清理旧字符串的内存.

让 myString = String(mySubstring)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值