11

How can I update the following code to the new version of swift:

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

I have tried following this post but I can't get it right How can I use String slicing subscripts in Swift 4?

I adjusted my original code to localNumber[..<3] but I get:

Cannot subscript a value of type 'String' with an index of type 'PartialRangeUpTo'

Cœur
  • 34,719
  • 24
  • 185
  • 251
user1079052
  • 3,655
  • 4
  • 25
  • 50
  • 1
    Update your question showing how you attempted to make use of the information in the linked question. – rmaddy Aug 28 '17 at 15:51
  • 2
    Unrelated but why are you putting the `!` operator just before the `=`? Get rid of that. – rmaddy Aug 28 '17 at 15:52

2 Answers2

19

I would say localNumber.prefix(3) in this situation. Short and sweet.

matt
  • 485,702
  • 82
  • 818
  • 1,064
8

The problem with your attempt to use localNumber[..<3] is that you can't pass an Int as the range. You need to pass a String.Index.

Your code needs to be:

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

Also note that you do not want the ! operator after text.

rmaddy
  • 307,833
  • 40
  • 508
  • 550
  • I get "_Cannot subscript a value of type 'String' with an index of type 'PartialRangeUpTo'_" – Cœur Jan 03 '18 at 05:24
  • Oh, I solve it by wrapping the subscript result with `String( … )`, like `String(localNumber[.. – Cœur Jan 03 '18 at 05:31