CountableClosedRange、CountableClosedRange、Range、ClosedRange

查看了网上一些对它们的分析理解,有的地方验证了是错误的。可能是swift版本不同的缘故吧,目前我是使用的swift5。改正一下。

//CountableClosedRange

let rangeA:ClosedRange= (1...5)

// ClosedRange:

let rangeB = (1.1...5.1)

//CountableRange

let rangeC =1..<5

// Range:

let rangeD =1.1..<5.1

print(type(of: rangeA))

print(type(of: rangeB))

print(type(of: rangeC))

print(type(of: rangeD))

输出:

ClosedRange

ClosedRange

Range

Range

有人说ClosedRange和Range不能遍历循环,其实不对,如果把里面的元素换成整数,是同样可以遍历循环的。

swift截取字符串感觉有些麻烦,截取字符串写了个方法,此方法避免下标越界造成崩溃:

func subClosedRange(bound:ClosedRange) ->String{

        var lower = bound.lowerBound

        var upper = bound.upperBound

        if lower > upper {

            (lower, upper) = (upper, lower)

        }

        I fupper >self.count{

            upper =self.count

        }

        let startIndex =self.index(self.startIndex, offsetBy: lower)

        let endIndex =self.index(self.startIndex, offsetBy: upper)

        return String(self[startIndex...endIndex])

    }

如果用range,最后的返回值修改为return String(self[startIndex..

func subString(start:Int, end:Int) ->String{

        if start < end && (end - start) <= (self.count- start) {

            let startIndex =self.index(self.startIndex, offsetBy: start)

            let endIndex =self.index(self.startIndex, offsetBy: end)

            return String(self[startIndex..

        }

        return ""

    }


func subString(from:Int) ->String{

        if from >=self.count{

            return ""

        }

        let startIndex =self.index(self.startIndex, offsetBy: from)

        let endIndex =self.endIndex

        return String(self[startIndex..

    }


/// 根据时间格式获取当前时间的字符串

    ///

    /// - Parameter formatter: 时间格式化

    /// - Returns: 时间字符串

    static func getCurrentTime(formatter:String) ->String{

        let date =Date()

        let dateFormatter =DateFormatter()

        dateFormatter.locale=Locale.current

        dateFormatter.dateFormat= formatter

        return dateFormatter.string(from: date)

    }

你可能感兴趣的:(CountableClosedRange、CountableClosedRange、Range、ClosedRange)