Swift里的字符串处理

关键字:'substring(with:)' is deprecated: Please use String slicing subscript. 'subscript(_:)' is unavailable: cannot subscript String with an integer range

在Swift中subString的方法deprecated了怎么办?


废弃提示

想要截取字符串有两种方法:

1.将String转成NSString

转换乘NSString后就可以使用了substring to:/from:/with:(range)而且返回值为String类型。

let movie = "当幸福来敲门"
let subString = (movie as NSString).substring(with: NSMakeRange(2, 3))
print("截取后的字符串:\(subString)")

2.使用新的字符串处理方法

let movie = "当幸福来敲门"
let subString = movie[1..<4]
print("截取后的字符串:\(subString)")

传入一个Range 区间进行截取,又不行?


报错了???

由于截取字符串所用的index range不能像OC那样,所以要还要一步处理才行。

let movie = "当幸福来敲门"
let indexStart = movie.startIndex
let indexTwo = movie.index(indexStart, offsetBy: 1)
let indexFive = movie.index(indexStart, offsetBy: 3)
let subString = movie[indexTwo..

处理结果如图:


处理结果

相信很多人觉得麻烦,还不如转成NSString简单,一句话就能搞定,
所以现在还有一种方法就是通过两个Swift方法来处理,可以直接使用Int值来当参数,不需要专门去生成Index、Range。

let movie = "当幸福来敲门"
let subString = movie.dropFirst(1).prefix(2)
print("截取后的字符串:\(subString)")

dropFirst()用来丢弃前面的指定个数的字符来截取字符串,丢弃后prefix()剪切头部制定个数的字符串来获取subString。
同样也有dropLast和suffix方法,具体使用类似,大家可以自己试试。


dropLast()

suffix()

补充:由于drop方法得到的字符串是substring类型,所以需要转化一下,使用String(movie.dropFirst(1))转化为String即可

如果帮你解决了问题,点个赞吧

贴个建站用vps推荐,有需要的可以点一下(⁎⁍̴̛ᴗ⁍̴̛⁎)

你可能感兴趣的:(Swift里的字符串处理)