都說Swift2和Swift3不是同一門語言,但是我怎么覺得Swift4有時看著也像別人家的孩子。。。。
這里主要是更新下以前的寫的Swift3的String相關知識:
string的長度可以直接用count了
有了prefix()和suffix()獲取頭尾的相應范圍的子串
string.substring(to: <#T##String.Index#>)
string.substring(from: <#T##String.Index#>)
string.substring(with: <#T##Range<String.Index>#>)
這三個方方法統(tǒng)一為
string[<#T##Range<String.Index>#>]
即
string[index1..<index2] 左閉右開
或者
string[index1...index2] 全閉合
當然如果是從頭開始你可以把
string[str.startIndex..<index]
簡寫成
string[..<index]
1.新建字符串還是一樣的,這個肯定不會改的了
let str = "Do any additional setup after loading the view, typically from a nib."
2.字符串長度從Swift2.x的countElements(str)
到Swift3.x的str.characters.count
改到我最喜歡的Swift4.x的:str.count
print(str.count)
//別試了 69
3.獲取第一個到第十個字符串可以用prefix()
//方法一:這個夠簡單
let sub1 = str.prefix(10)
//方法二:這個延續(xù)上一個版本
let index = str.index(str.startIndex, offsetBy: 10)
//但是下面這句被蘋果廢了哦
//let sub2 = str.substring(to: index1)
//改成這樣了,哈哈,果然越來越精簡了
let sub2 = str[..<index]
//input: "Do any add"
4.獲取倒數(shù)十個字符可以用suffix()
//這個和上面一樣
let sub3 = str.suffix(10)
//這個也是一樣
let index2 = str.index(str.endIndex, offsetBy: -10)
//這個同樣被廢棄了
//let sub4 = str.substring(from: index2)
//改成這樣才多哦
let sub4 = str[index2..<str.endIndex]
//input: "rom a nib."
5.獲取自定義范圍的字符串,比如4-6("any"
)
let index3 = str.index(str.startIndex, offsetBy: 3) //為啥是3...因為...你懂得
let index4 = str.index(str.startIndex, offsetBy: 6)
//過期了哦
//let str3 = str.substring(with: index3..<index4)
let sub4 = str[index3..<index4]
//input: "any"
6.獲取子串的擴展
extension String {
//獲取子字符串
func substring(in r: Range<Int>) -> String? {
if r.lowerBound < 0 || r.upperBound > self.count {
return nil
}
let startIndex = self.index(self.startIndex, offsetBy:r.lowerBound)
let endIndex = self.index(self.startIndex, offsetBy:r.upperBound)
return String(self[startIndex..<endIndex])
}
}
用法還是和以前一樣哈
let str4 = str.substring(in: 3..<6)
print("string from 4 - 6 : \(str4)")
//string from 4 - 6 : any
好啦,就到這里啦