加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在Swift中使用substringToIndex?

发布时间:2020-12-14 06:12:28 所属栏目:百科 来源:网络整理
导读:参见英文答案 Type ‘String.Index’ does not conform protocol ‘IntegerLiteralConvertible’3答案我在这行得到编译器错误: UIDevice.currentDevice().identifierForVendor.UUIDString.substringToIndex(8) 类型“String.Index”不符合协议“IntegerLite
参见英文答案 > Type ‘String.Index’ does not conform protocol ‘IntegerLiteralConvertible’3答案我在这行得到编译器错误:
UIDevice.currentDevice().identifierForVendor.UUIDString.substringToIndex(8)

类型“String.Index”不符合协议“IntegerLiteralConvertible”

我的目的是获取子字符串,但是如何?

在Swift中,字符串索引涉及字形集群,而IndexType不是Int。您有两个选择 – 将字符串(您的UUID)转换为NSString,并将其用作“before”,或者为第n个字符创建索引。

两者如下图所示:

然而,该方法在Swift版本之间发生了根本性的变化。阅读以下版本…

Swift 1

let s: String = "Stack Overflow"
let ss1: String = (s as NSString).substringToIndex(5) // "Stack"
//let ss2: String = s.substringToIndex(5)// 5 is not a String.Index
let index: String.Index = advance(s.startIndex,5)
let ss2:String = s.substringToIndex(index) // "Stack"

CMD点击substringToIndex混淆地带你到NSString定义,但CMD点击字符串,你会发现以下:

extension String : Collection {
    struct Index : BidirectionalIndex,Reflectable {
        func successor() -> String.Index
        func predecessor() -> String.Index
        func getMirror() -> Mirror
    }
    var startIndex: String.Index { get }
    var endIndex: String.Index { get }
    subscript (i: String.Index) -> Character { get }
    func generate() -> IndexingGenerator<String>
}

Swift 2
作为评论员@DanielGalasko指出提前已经改变…

let s: String = "Stack Overflow"
let ss1: String = (s as NSString).substringToIndex(5) // "Stack"
//let ss2: String = s.substringToIndex(5)// 5 is not a String.Index
let index: String.Index = s.startIndex.advancedBy(5) // Swift 2
let ss2:String = s.substringToIndex(index) // "Stack"

Swift 3
在Swift 3中,它再次改变:

let s: String = "Stack Overflow"
let ss1: String = (s as NSString).substring(to: 5) // "Stack"
let index: String.Index = s.index(s.startIndex,offsetBy: 5)
var ss2: String = s.substring(to: index) // "Stack"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读