Swift中字符串截取方法(substring)


下面介紹2種swift的字符串截取方法,實(shí)際上用到了substringFromIndex, substringToIndex, substringWithRange

  1. 將String轉(zhuǎn)化為NSString再截取,代碼如下:
var s="1234567890"

var ns1=(s as NSString).substringFromIndex(5)
var ns2=(s as NSString).substringToIndex(4)

var ns3=(s as NSString).substringWithRange(NSMakeRange(4, 1))

println(ns1)//67890
println(ns2)//1234
println(ns3)//5
  1. 直接調(diào)用String的對應(yīng)方法(推薦使用該方法),由于String對應(yīng)的方法參數(shù)是String.Index類型而非Int類型,所以我們首先要?jiǎng)?chuàng)建String.Index類型參數(shù)值,代碼如下:
// var s="1234567890"

// let index = advance(s.startIndex, 5)  swift 1.x
//let index2 = advance(s.endIndex, -6); swift 1.x


var s="1234567890"

let index = s.startIndex.advancedBy(5) //swift 2.0+
let index2 = s.endIndex.advancedBy(-6) //swift 2.0+
var range = Range<String.Index>(start: index2,end: index)

var s1:String=s.substringFromIndex(index)
var s2:String=s.substringToIndex(index2)
var s3=s.substringWithRange(range)

print(s1)//67890
print(s2)//1234
print(s3)//5

 // 擴(kuò)展String

extension String {
    subscript (r: Range<Int>) -> String {
        get {
            let startIndex = self.startIndex.advancedBy(r.startIndex)
            let endIndex = self.startIndex.advancedBy(r.endIndex)

            return self[Range(start: startIndex, end: endIndex)]
        }
    }
}

var s4 = s[2...4]
print(s4);//345

通過String定義可以看出屬性Index是個(gè)結(jié)構(gòu)體,具體代碼如下:

extension String : CollectionType {
    struct Index : BidirectionalIndexType, Comparable, Reflectable {
        func successor() -> String.Index
        func predecessor() -> String.Index
        func getMirror() -> MirrorType
    }
    var startIndex: String.Index { get }
    var endIndex: String.Index { get }
    subscript (i: String.Index) -> Character { get }
    func generate() -> IndexingGenerator<String>
}

最后,有網(wǎng)友回復(fù)加一個(gè)set方法,感覺更完美,就都寫到這里:

set {
    let startIndex = self.startIndex.advancedBy(range.startIndex)
    let endIndex = self.startIndex.advancedBy(range.endIndex)
    let strRange = Range(startIndex..<endIndex)
    self.replaceRange(strRange, with: newValue)
}

**轉(zhuǎn)自: **

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容