工作隨筆——Swift中的Range和一些字符操作


    截取字符串在Swift中相比OC要復雜很多,主要原因可能還是OC的NSRange的創建方法中參數類型為int,而Swift卻對類型要求很嚴格,int不能作為參數創建Range,這要使用String中的startIndex和endIndex,但問題又出來了,如果要有靈活的范圍呢?在之前可以直接就用advance函數,現在的Swift沒有這個函數了,要用到advancedBy和distanceTo。

    以下代碼是對於Range和advancedBy函數的使用:

        //截取子串
        let str = "Hello,Swift"
        let startIndex = str.startIndex
        //方法一:使用advancedBy + stringByReplacingCharactersInRange
        let endIndexA = startIndex.advancedBy(str.characters.count-1)
        let rangeOfHelloA = Range(start: startIndex, end: endIndexA)
        let newStr = str.stringByReplacingCharactersInRange(rangeOfHelloA, withString: "")
        print("newStr1 = " + newStr)
        
        //方法二:advancedBy + subStringWithRange
        let newStr2 = str.substringWithRange(rangeOfHelloA)
        print("newStr2 = " + newStr2)
        
        //方法三:使用NSString類型;Swift也提供了NSString和S挺
        let str_OC = str as NSString
        let newStr3 = str_OC.substringWithRange(NSRange(location: 0, length: 5)) as String
        //或者
//        let newStr3 = str_OC.substringWithRange(NSMakeRange(0, 5)) as String
        print("newStr3 = " + newStr3)
        
        
        //插入字符
        var originStr = "0000"
        originStr.insert("5", atIndex: originStr.startIndex.advancedBy(2))
        print("newstr4 = " + originStr)
        //插入字符串->字符串需要轉成字符集才能進行操作
        originStr.insertContentsOf("字符串".characters, at: originStr.startIndex.advancedBy(2))
        print("newStr5 = " + originStr)
        
        //移除其中的某個字符
        var originStr2 = "12345"
        originStr2.removeAtIndex(originStr2.startIndex)
        print("newStr6 = " + originStr2)
        //移除子串  注意:endIndex是從整個字符的后一位開始的,直接使用originStr2.endIndex會導致越界;
        let removeRange = originStr2.startIndex.advancedBy(1)...originStr2.endIndex.advancedBy(-2)
        originStr2.removeRange(removeRange)
        print("newStr7 = " + originStr2)

   運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM