zoukankan      html  css  js  c++  java
  • Swift String下标扩展

    对swift的String进行扩展,方便进行下标访问元素:

    extension String{
        subscript(range: Range<Int>) -> String {
            get{
                let startIndex = self.startIndex.advancedBy(range.endIndex)
                let endIndex = self.startIndex.advancedBy(range.endIndex)
                
                return self[Range(start: startIndex, end: endIndex)]
            }
        }
        
        subscript(index: Int) -> String{
            get{
                return self[index...index]
            }
        }
    }
    
    let string = "string"
    // string[1]  "t"
    // string[0...2]  "str" 
    // string[-1...6]  error
    // string[-2...-1]  error
    // string[6...7]  error

    在这种情况下如果访问的下标有一边不在String的范围之内就会报错

    可以定义当访问越界时统一返回空字符串,修改方式如下:

    extension String{
        subscript(range: Range<Int>) -> String {
            get{
                let rStart = range.startIndex < 0 ? 0 : range.startIndex
                let rEnd = range.endIndex < 0 ? 0 : range.endIndex
                
                let startIndex = self.startIndex.advancedBy(rStart, limit: self.endIndex)
                let endIndex = self.startIndex.advancedBy(rEnd, limit: self.endIndex)
                
                return self[Range(start: startIndex, end: endIndex)]
            }
        }
        
        subscript(index: Int) -> String{
            get{
                return self[index...index]
            }
        }
    }
    
    let string = "string"
    // string[1]  "t"
    // string[0...2]  "str"
    // string[-1...6]  "string"
    // string[-2...-1]  ""
    // string[6...7]  ""
    

      如果对越界返回有其他处理,可以参照上述代码进行相应修改。

      

  • 相关阅读:
    初识HTML
    django中这是登录过期时间
    linux之几个重要性能指标
    linux之查看端口占用
    python目录操作整理
    jmeter用户自定义变量的实际使用
    ubuntu安装mysql与配置外网访问
    ubuntu 16.04部署python项目(Nginx+uwsgi+django)
    selenium脚本奇怪报错
    在Ubuntu云服务上部署jenkins
  • 原文地址:https://www.cnblogs.com/FranZhou/p/5016643.html
Copyright © 2011-2022 走看看