Swift4 獲取String子字符串

都說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

好啦,就到這里啦

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容