关键字:'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..<indexFive]
print("截取后的字符串:\(subString)")
处理结果如图:
处理结果
相信很多人觉得麻烦,还不如转成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即可
网友评论