Swift 4:不推荐使用 substring(with:)':请使用字符串切片下标 [重复]

Posted

技术标签:

【中文标题】Swift 4:不推荐使用 substring(with:)\':请使用字符串切片下标 [重复]【英文标题】:Swift 4 : substring(with:)' is deprecated: Please use String slicing subscript [duplicate]Swift 4:不推荐使用 substring(with:)':请使用字符串切片下标 [重复] 【发布时间】:2017-10-14 21:41:51 【问题描述】:

我正在使用 html 的解码功能。但我收到了这个警告。如何摆脱?

func decode(_ entity : String) -> Character? 

    if entity.hasPrefix("&#x") || entity.hasPrefix("&#X")
        return decodeNumeric(entity.substring(with: entity.index(entity.startIndex, offsetBy: 3) ..< entity.index(entity.endIndex, offsetBy: -1)), base: 16)
     else if entity.hasPrefix("&#") 
        return decodeNumeric(entity.substring(with: entity.index(entity.startIndex, offsetBy: 2) ..< entity.index(entity.endIndex, offsetBy: -1)), base: 10)
     else 
        return characterEntities[entity]
    

谢谢。

【问题讨论】:

你用谷歌搜索过substring(with:)' is deprecated: Please use String slicing subscript吗?那里似乎有很多 是的,我偏离了方向搜索。但我没有找到适合我的答案。而且我不明白为什么会收到此错误。 【参考方案1】:

someString.substring(with: someRange) 只需为someString[someRange]

所以改变:

entity.substring(with: entity.index(entity.startIndex, offsetBy: 3) ..< entity.index(entity.endIndex, offsetBy: -1))

entity[entity.index(entity.startIndex, offsetBy: 3) ..< entity.index(entity.endIndex, offsetBy: -1)]

换句话说,将.substring(with: 更改为[,并将结束) 更改为]

结果是Substring,而不是String。因此,您可能需要将结果包装在 String( ) 中以从子字符串结果中获取 String

【讨论】:

以上是关于Swift 4:不推荐使用 substring(with:)':请使用字符串切片下标 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift3 substring几种常用用法

如何在 Swift 4 中使用字符串下标 [重复]

条件绑定的初始化程序必须具有可选类型,而不是“Substring.SubSequence”(又名“Substring”) - swift [重复]

CIColorControls & UISlider w/Swift 4 [重复]

Swift - 坐标不可用:从 iOS 7 开始不推荐使用 API

阐述indexOf,charAt,subString 方法的使用