Swift 获取字符串指定位置字符

适用于当前 Swift最高版本(Swift 5.2

添加如下代码扩展到项目当中

extension String {

    var length: Int {
        return count
    }

    subscript (i: Int) -> String {
        return self[i ..< i + 1]
    }

    func substring(fromIndex: Int) -> String {
        return self[min(fromIndex, length) ..< length]
    }

    func substring(toIndex: Int) -> String {
        return self[0 ..< max(0, toIndex)]
    }

    subscript (r: Range<Int>) -> String {
        let range = Range(uncheckedBounds: (lower: max(0, min(length, r.lowerBound)),
                                            upper: min(length, max(0, r.upperBound))))
        let start = index(startIndex, offsetBy: range.lowerBound)
        let end = index(start, offsetBy: range.upperBound - range.lowerBound)
        return String(self[start ..< end])
    }
}

使用示例

let str = "abcdef"
str[1 ..< 3] // returns "bc"
str[5] // returns "f"
str[80] // returns ""
str.substring(fromIndex: 3) // returns "def"
str.substring(toIndex: str.length - 2) // returns "abcd"

不使用上面的扩展(Swift原生方法)

let str = "Hello, world!"
let index = str.index(str.startIndex, offsetBy: 4)
str[index] // returns Character 'o'

let endIndex = str.index(str.endIndex, offsetBy:-2)
str[index ..< endIndex] // returns String "o, worl"

String(str.suffix(from: index)) // returns String "o, world!"
String(str.prefix(upTo: index)) // returns String "Hell"

总结

建议使用扩展来解决获取指定位置字符的问题,可以帮你节省大量Swift版本更新时的代码迁移时间。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这两天坚持着临摹,感觉比以前写好多了,以前坚持了好几晚,都没临摹出什么感觉来,哈哈…… 看着自己的字迹,心里好开心...
    岁月的足迹阅读 412评论 0 1
  • 没有人为谁幸福 这些年...
    没有鸡汤阅读 357评论 1 5
  • 波普尔证伪主义理论的启发 证伪,就是证实是假的意思。他的理论对人们在科学理论和非科学理论之间画一条界线有非常大的启...
    Z先生Y小姐阅读 475评论 0 0
  • 周日晚上8点40,在姐家书房里床上躺着,ok在怀里吃奶,半梦半醒着,地板上的小台扇在鼓鼓地吹,凉风刚好到脚底处。楼...
    念即起行阅读 125评论 0 0