微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Swift 编程语言中获取字符串的第 n 个字符

如何解决在 Swift 编程语言中获取字符串的第 n 个字符

注意: 有关 Swift 4 和 Swift 5 的正确实现,请参阅:

您可以扩展 StringProtocol 以使下标也可用于子字符串:

extension StringProtocol {
    subscript(_ offset: Int)                     -> Element     { self[index(startIndex, offsetBy: offset)] }
    subscript(_ range: Range<Int>)               -> SubSequence { prefix(range.lowerBound+range.count).suffix(range.count) }
    subscript(_ range: ClosedRange<Int>)         -> SubSequence { prefix(range.lowerBound+range.count).suffix(range.count) }
    subscript(_ range: PartialRangeThrough<Int>) -> SubSequence { prefix(range.upperBound.advanced(by: 1)) }
    subscript(_ range: PartialRangeUpTo<Int>)    -> SubSequence { prefix(range.upperBound) }
    subscript(_ range: PartialRangeFrom<Int>)    -> SubSequence { suffix(Swift.max(0, count-range.lowerBound)) }
}

extension LosslessstringConvertible {
    var string: String { .init(self) }
}

extension BidirectionalCollection {
    subscript(safe offset: Int) -> Element? {
        guard !isEmpty, let i = index(startIndex, offsetBy: offset, limitedBy: index(before: endindex)) else { return nil }
        return self[i]
    }
}

测试

let test = "Hello USA 

解决方法

如何获取字符串的第 n 个字符?我尝试了括号([])访问器,但没有成功。

var string = "Hello,world!"

var firstChar = string[0] // Throws error

错误:“下标”不可用:无法使用 Int 为字符串下标,请参阅文档注释以进行讨论

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。