Swift3升级到Swift4后String的API升级

苹果的swiftAPI更新很快,现在已经升级到swift4,在我做API适配的时候发现Swift4对String的操作简化了很多,所以写一篇文章总结一下,希望能够帮助到有需要的人。

在Swift4之前使用String的字符集需要使用String.characters来获取,如代码

var str1 = "What are doing?"
//Swift3
for c in str1.characters {
    print(c)
}

//swift4
for c in str1 {
    print(c)
}

//通过两种版本代码对比发现Swift4比Swift3代码简洁的多。

Swift3获取字符串的字符数(长度)是String.characters.count,在Swift4中直接String.count就行了,代码对比如下
//Swift3
let length = str1.characters.count

//Swift4
let length = str1.count

当然如果想要获取特定字符集的长度还是可以用到下面这种写法
let length = str.utf8.count

当然在swift4之后字符串截取的api变化也很大,之前的截取方法都被废弃掉了,下面我们使用代码来说明。
let template = "<<<Hello>>>"
let indexStartOfText = template.index(template.startIndex, offsetBy: 3)
let indexEndOfText = template.index(template.endIndex, offsetBy: -3)

// Swift4的写法
let substring1 = template[indexStartOfText...]  // "Hello>>>"

// Swift3的接口已经被废弃,代码如下
// let substring1 = template.substring(from: indexStartOfText)

///截取到某个位置
// Swift4
let substring2 = template[..<indexEndOfText]    // "<<<Hello"

// Swift3的接口已被废弃
// let substring2 = template.substring(to: indexEndOfText)

//截取到某个区间
/ Swift4
let substring3 = template[indexStartOfText..<indexEndOfText] // "Hello"

// Swift3的接口在swift4中已被废弃
// let substring3 = template.substring(with: indexStartOfText..<indexEndOfText)

//在最后把截取得到的字符串需要转换回String
let strNew = String(subString)
如果还是习惯以前subString的写法也可以像下边这样写
let digits = "0123456789"
let index4 = digits.index(digits.startIndex, offsetBy: 4)

// The first of each of these examples is preferred
digits[...index4]              // "01234"
digits.prefix(through: index4)  

digits[..<index4]              // "0123"
digits.prefix(upTo: index4)     

digits[index4...]              // "456789"
digits.suffix(from: index4)

//在写截取区间值的时候一定注意开区间和闭区间的事情,他们最后得到的结果不同


查看原文:https://www.liuandy.cn/ios/2017/12/27/2170.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值