2017-08-28 21 views
9

如何更新下面的代码来迅速的新版本:“子(至:)”被弃用:请使用字符串的切片标有“局部范围高达”操作

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

我曾尝试下面这篇文章,但我不能得到正确 How can I use String slicing subscripts in Swift 4?

我调整我的原代码localNumber[..<3]但我得到:

不能下标String类型值” “与类型的索引‘PartialRangeUpTo’

+1

更新您的问题,显示您如何试图利用链接问题中的信息。 – rmaddy

+2

不相关,但为什么要在'='之前放置'!'运算符?摆脱这一点。 – rmaddy

回答

15

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

+0

我试过,但前缀是一个未解决的标识符localNumber.String(前缀(3)) – user1079052

+0

我得到它的工作,谢谢你的建议字符串(localNumber.characters.prefix(3)) – user1079052

+2

@ user1079052不,你想'串(localNumber.prefix(3))'。 – rmaddy

5

您尝试使用localNumber[..<3]的问题是您无法通过Int作为范围。您需要通过String.Index

你的代码需要:

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

还要注意的是,你不希望!操作text后。

+0

我得到了_Cannot下标'String'类型的值,其索引类型为'PartialRangeUpTo '_“ –

+0

哦,我通过用'String(...)'包装下标结果来解决它,就像'String (localNumber [.. <索引])' –