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]  ""
    

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

      

  • 相关阅读:
    诊断
    HIS内号码说明
    ASP.NET Page life cycle
    ASP.NET Simple page life cycle
    java多线程
    ibatis sqlmap
    cglib和asm
    利用ant编译maven项目
    Spring Cache与Tair结合
    USACO 1.2 MILKING COWS
  • 原文地址:https://www.cnblogs.com/FranZhou/p/5016643.html
Copyright © 2011-2022 走看看