swift 字符串的截取 以及 Range 的用法




func someMethodOfRange() {

        

        /**

         *  字符串與Range的用法

         */

        

        //1.截取字符串(字符)在整個字符串中所在的位置,返回的類型爲 Index

        var str = "abcdefghi"

        let startIndex =  str.rangeOfString("cde")!.startIndex

        print(startIndex)//2

        

        let endIndex =  str.rangeOfString("cde")!.endIndex

        print(endIndex)//5

        

        //2、根據字符串的索引來獲取對應的字符

        let text = "abcdefghi"

        let index2 = text.startIndex.advancedBy(2) //will call succ 2 times

        print(index2)//2

        

        let lastChar: Character = text[index2] //now we can index!

        print(lastChar)//c

        

        let lastChar2 = text.characters[index2] //will do the same

        print(lastChar2)//c

        

        //3.截取字符串(字符)在整個字符串中所在的範圍 、返回值類型 Range<Index>

        let range: Range<String.Index> = text.rangeOfString("bc")!

        print(range)//1..<3

        

        let index3: Int = text.startIndex.distanceTo(range.startIndex)

        print(index3)//1

        

        let index4: Int = text.startIndex.distanceTo(range.endIndex)

        print(index4)//3

        

        print(text.characters.count)//9

        

        let abc = "@123"

        print(abc.characters.count)//5


//4.0 Index --> Int

let range: Range<String.Index> = self.text!.rangeOfString(text)!

        let index3: Int = self.text!.startIndex.distanceTo(range.startIndex)

        let index4: Int = self.text!.startIndex.distanceTo(range.endIndex)


        

        //一個字符串。指標值可以通過調用predecessor()方法訪問其 先前 指標,其指標successor()下一個指標 調用方法。字符串中的任何指標可從任何其他指數通過把這些方法結合在一起,或通過使用--_:)方法。試圖訪問一個字符串的範圍以外的索引會引發一個運行時錯誤

        let greeting = "123456789"

        greeting[greeting.startIndex]

        print(greeting)

        print("起使位置\(greeting.startIndex)")//0

        print("終點位置\(greeting.endIndex)")//9

        print(greeting[greeting.startIndex])//1

        

        greeting[greeting.endIndex.predecessor()]

        print(greeting[greeting.endIndex.predecessor()])//9

        print(greeting.endIndex.predecessor())//8

        print(greeting.startIndex.successor())//1

        

        greeting[greeting.startIndex.successor()]

        print(greeting[greeting.startIndex.successor()])//2

        

        let index = greeting.startIndex.advancedBy(7)

        greeting[index]

        print(greeting[index])//8

        //試圖在字符串的範圍以外的索引處訪問一個字符,將引發一個運行時錯誤。

        //greeting[greeting.startIndex.predecessor()]//cuowu

        //print(greeting[greeting.endIndex])//cuowu

        

        //越界

        //greeting[greeting.endIndex]

        //greeting.endIndex.successor()

        

        //““Use the <indices> property of the <characters> property to 創建一個字符串中訪問單個字符的所有索引的範圍。

        for index in greeting.characters.indices {

            print("\(greeting[index])",terminator: "")

            //            print("**")

            

        }

        

        

    }

//相關的應用:在UILabel裏面,不同文本顯示不同字體的大小

extension UILabel {

    

    /*

     *設置text的字體大小

     */

    func settingLabelTextKitWithText(text:String,font:UIFont) {

    

        

        if text.isEmpty {//通過檢查其 Boolean 類型的 isEmpty 屬性來判斷該字符串是否爲空:

            print("什麼都沒有")

            return

        }else {

            

            //方法1

            let attrstring:NSMutableAttributedString = NSMutableAttributedString(string: self.text!)

            let str = NSString(string: self.text!)

            let theRange = str.rangeOfString(text)

            attrstring.addAttribute(NSFontAttributeName, value: font, range: theRange)

            self.attributedText = attrstring

            

            /**

                //  方法2

                let attrstring:NSMutableAttributedString = NSMutableAttributedString(string: self.text!)

                let range: Range<String.Index> = self.text!.rangeOfString(text)!

                let index3: Int = self.text!.startIndex.distanceTo(range.startIndex)

                let index4: Int = self.text!.startIndex.distanceTo(range.endIndex)

                attrstring.addAttribute(NSFontAttributeName, value: font, range: NSMakeRange(index3, index4 - index3))

                self.attributedText = attrstring

            */

            

        }

    

    }






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章