Swift字符串截取extention,简便截取方法

Swift的字符串截取并不能直接通过下标设置起始和结尾位置,通常比较繁琐。eg:

     //原生的
        let index = str.index(str.startIndex, offsetBy:3)
        print(str[index]) //d
        
        let endIndex = str.index(str.endIndex, offsetBy:-1)
        print(str[index ..< endIndex])    //de
        print(String(str.suffix(from: index))) //def
        print(String(str.prefix(upTo: index))) //abc

 通过extention(扩展)可以实现简便调用。如下:

 

extension String {

    var length: Int {
        return self.count
    }

    subscript (i: Int) -> String {
        return String(self[i ..< i + 1])
    }

    func substring(fromIndex: Int) -> String {
        return String(self[min(fromIndex, length) ..< length])
    }

    func substring(toIndex: Int) -> String {
        return String(self[0 ..< max(0, toIndex)])
    }

    subscript (r: Range) -> String {
        let range = Range(uncheckedBounds: (lower: max(0, min(length, r.lowerBound)), upper: min(length, max(0, r.upperBound))))
        let start = index(startIndex, offsetBy: range.lowerBound)
        let end = index(start, offsetBy: range.upperBound - range.lowerBound)
        return String(self[start ..< end])
    }

}

调用如下: 

//extension 方法
        print(str[3])  //d
        print(str[3..<5]) //de
        print(str.substring(fromIndex: 3)) //def
        print(str.substring(toIndex: 3)) //abc

 

 

你可能感兴趣的:(Swift)