【问题标题】:'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range upto' operator'substring(to:)' 已弃用:请使用带有 'partial range upto' 运算符的字符串切片下标
【发布时间】:2018-02-05 22:49:39
【问题描述】:

如何将以下代码更新到新版本的swift:

self.areaCodeLael.text! = localNumber.substring(to: localNumber.index(localNumber.startIndex, offsetBy: 3))

我已尝试关注此帖子,但无法正确完成 How can I use String slicing subscripts in Swift 4?

我将原始代码调整为localNumber[..<3],但我得到了:

不能用“PartialRangeUpTo”类型的索引为“String”类型的值下标

【问题讨论】:

  • 更新您的问题,显示您如何尝试使用链接问题中的信息。
  • 不相关,但您为什么将! 运算符放在= 之前?摆脱它。

标签: swift substring swift4


【解决方案1】:

在这种情况下我会说localNumber.prefix(3)。短而甜。

【讨论】:

  • 我试过了,但是前缀是一个未解析的标识符 localNumber.String(prefix(3))
  • 我搞定了,谢谢你的建议 String(localNumber.characters.prefix(3))
  • @user1079052 不,你想要String(localNumber.prefix(3))
  • 我将它包裹在 String() 中。谢谢!
【解决方案2】:

您尝试使用localNumber[..<3] 的问题是您不能将Int 作为范围传递。你需要传递一个String.Index

您的代码需要:

let index = localNumber.index(localNumber.startIndex, offsetBy: 3)
self.areaCodeLael.text = localNumber[..<index]

另请注意,您不希望在text 之后使用! 运算符。

【讨论】:

  • 我得到“无法使用'PartialRangeUpTo'类型的索引为'String'类型的值下标
  • 哦,我用String( … )包裹下标结果来解决,比如String(localNumber[..&lt;index])
猜你喜欢
  • 2018-03-02
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多