Swift 4:'substring(to:)' 已弃用 [重复]

Posted

技术标签:

【中文标题】Swift 4:\'substring(to:)\' 已弃用 [重复]【英文标题】:Swift 4: 'substring(to:)' is deprecated [duplicate]Swift 4:'substring(to:)' 已弃用 [重复] 【发布时间】:2017-08-13 17:14:49 【问题描述】:

我在将我的 Swift 3 代码转换为 Swift 4 时遇到问题。我已经成功地翻译了应用程序中的所有其他内容,但是在一行代码中遇到了问题:

cleanURL = cleanURL.substring(to: cleanURL.index(before: cleanURL.endIndex))

我得到的错误是:

ViewController.swift:62:33: 'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range upto' operator.

【问题讨论】:

你确定改变一个变量而不是定义一个新变量有意义吗?如果去掉最后一个符号后 url 是“干净的”,为什么在此之前它还被称为“cleanURL”? 检查this thread。似乎是重复的。 【参考方案1】:

好吧,按照错误说的做,使用字符串切片下标和“部分范围”运算符:

let actuallyCleanURL = kindaCleanURL[..<kindaCleanURL.endIndex]

请注意,这将返回 Substring。如果您需要进行更多的切片操作,请在此子字符串上进行。完成后,通过 String 初始化程序 (String(mySubString)) 将其提升为 String,从而生成内存副本。

【讨论】:

这不会返回一个字符串,而是一个 String.SubSequence。您需要使用 String(...) 将其转换为字符串,因为它可以像 OP 预期的那样工作。 @timgcarlson 好点

以上是关于Swift 4:'substring(to:)' 已弃用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Swift截取字符串(转载)

更新 substring(to:) 导致无法推断通用参数

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

swift3.0常用操作包含删除字符串(string),更换字符串,插入字符串

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

sql字符串转换日期