经过多次测试,swift原生api对字符串处理的效率特别慢,所以,在遇到需要统计字符串长度,取某个下标的字符串时,应该尽量把字符串转换成Array来处理。
例如:
let str = "hello world!"
//1.统计字符长度
print(str.count) //效率低
let arr = Array(str)
print(arr.count) //快
//2.取某个下标的字符串
let index = 5
let sub = String(str[str.index(str.startIndex, offsetBy: index)]) // sub = "o",效率低
let sub1 = String(arr[index]) //快
取某个范围的子串:
let sub2 = Array(arr[start..<end]).map { (char) -> String in
return String(char)
}.joined() //慢
let start = s.index(s.startIndex, offsetBy: start)
let end = s.index(s.startIndex, offsetBy: end)
let sub3 = String(s[start..<end]) //稍微快一些
let sub4 = String(arr[start..<end]) //最简短,速度也不快
不得不吐槽一下,swift处理字符串的效率真的太低下了