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
  • 37,241
  • 25
  • 195
  • 267
user1079052
  • 3,803
  • 4
  • 30
  • 55
  • 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
  • 515,959
  • 87
  • 875
  • 1,141
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
  • 314,917
  • 42
  • 532
  • 579
  • 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