swift字符串下标操作方法

 我们定义一个字符串:

var str = "abcdefgh"

然后我们想获得第三个字符, 也就是索引为2的字符,我们想可不可以用  str[2] 获得?  

我们向获得其中一段字符, 想是否可以用str[1...3] 获得?  

默认情况是字符串是不能这样做下标操作的 , 但是我可以扩展一下String,让它支持下标操作:  

extension String {

    subscript (r: Range<Int>) -> String {

        get {    

            return self[Range(start:  advance(self.startIndex, r.startIndex), end: advance(startIndex, r.endIndex - r.startIndex))]

        }

        set {

            self.replaceRange(Range(start: advance(self.startIndex, r.startIndex),end:advance(startIndex, r.endIndex - r.startIndex)), with: newValue);

        }

    }

    subscript(index:Int)->String{

        get{

            return self[Range(start:index,end:index+1)];

        }

        set{

            self[Range(start:index,end:index+1)]=newValue;

        }

    }

    subscript(start:Int,length:Int)->String{

        get{

            return self[Range(start:start,end:start+length+1)]

        }

        set{

            self[Range(start:start,end:start+length+1)]=newValue;

        }

    }


上面代码是将 Range<Int> 类型转会为  Range<String.index> 后再对字符做下标操作。 

转换的原理是用 advance函数把Int转换为String.index类型。  

那么大家知道怎么把String.index 类型转换为 Int 类型吗?  

大家先自己试一试。

微博关注luofei614,并私信输入 1001  , 我将告诉你答案。

da.png

本文由 luofei614 发表于GET

「GetParty」

关注微信号,推送好文章

微信中长按图片即可关注

更多精选文章

评论
微博一键登入