美文网首页IOS知识积累
熟练使用Swift中的区间

熟练使用Swift中的区间

作者: Sweet丶 | 来源:发表于2022-05-30 23:23 被阅读0次

Swift中的区间类型对应着OC的NSRange类型,那么Swift中的区间类型是怎么使用的呢?

Swift中的区间简单介绍.png
下面是了解区间类型的demo
1. 认识区间类型
func testRange() {
    
    let range1: ClosedRange<Int> = 1...4

    let range2: Range<Int> = 4..<7

    let range3: PartialRangeThrough<Int> = ...9

    let range4: PartialRangeFrom = 9...

    let range5: PartialRangeUpTo = ..<18
}
2. Range在Sring使用中的例子
func testRangeInString() {
    
    let str = "123456789"
    let index1 = String.Index(utf16Offset: 1, in: str)
    let index5 = String.Index(utf16Offset: 5, in: str)
    let index7 = String.Index(utf16Offset: 7, in: str)
    let range1: ClosedRange = index1 ... index5
    let range2: Range = index5 ..< index7
    let range3: PartialRangeThrough = ...index5
    let range4: PartialRangeFrom = index1...
    let range5: PartialRangeUpTo = ..<index7
    print(str[range1])
    print(str[range2])
    print(str[range3])
    print(str[range4])
    print(str[range5])
    
    // 打印结果:
    /*
     23456
     67
     123456
     23456789
     1234567
     */
}
3. Range在数组中使用的例子
func testRangeInArray() {
    testRangeWithOC()
    let arr = [1, 2, 3, 4, 5, 6, 7]
    print("闭区间取数组元素\(arr[1...3])")
    print("半闭区间取数组元素\(arr[1..<3])")
    print("左开右闭区间取数组元素\(arr[...3])")
    print("左开右半闭区间取数组元素\(arr[..<3])")
    print("左闭右开区间取数组元素\(arr[1...])")
    // 打印结果:
    /*
     闭区间取数组元素[2, 3, 4]
     半闭区间取数组元素[2, 3]
     左开右闭区间取数组元素[1, 2, 3, 4]
     左开右半闭区间取数组元素[1, 2, 3]
     左闭右开区间取数组元素[2, 3, 4, 5, 6, 7]
     */
}
4. Range与NSRange的相互转换
func testRangeWithOC() {
    print("OC与Swift的range混编----")
    let ocRange = NSMakeRange(1, 3)
    print("ocRange:\(ocRange)")// ocRange:{1, 3}
    
    print("ocRange转半闭区间----")
    guard let range = Range(ocRange) else {
        return
    }
    
    range.forEach({ num in
        print(num)
    })// 1 2 3
    
    print(range) // 1..<4
    
    let ocRange2 = NSMakeRange(range.lowerBound, range.count)
    print(ocRange2)// {1, 3}
    
    // 以下会报错
//    let range1 = ClosedRange<Int>(ocRange)
//    let range2 = PartialRangeThrough<Int>(ocRange)
//    let range3 = PartialRangeUpTo<Int>(ocRange)
//    let range4 = PartialRangeFrom<Int>(ocRange)
}

相关文章

网友评论

    本文标题:熟练使用Swift中的区间

    本文链接:https://www.haomeiwen.com/subject/ckmaprtx.html