Search code examples
swiftswift4

How can I use String substring in Swift 4? 'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator


I have the following simple code written in Swift 3:

let str = "Hello, playground"
let index = str.index(of: ",")!
let newStr = str.substring(to: index)

From Xcode 9 beta 5, I get the following warning:

'substring(to:)' is deprecated: Please use String slicing subscript with a 'partial range from' operator.

How can this slicing subscript with partial range from be used in Swift 4?


Solution

  • You should leave one side empty, hence the name "partial range".

    let newStr = str[..<index]
    

    The same stands for partial range from operators, just leave the other side empty:

    let newStr = str[index...]
    

    Keep in mind that these range operators return a Substring. If you want to convert it to a string, use String's initialization function:

    let newStr = String(str[..<index])
    

    You can read more about the new substrings here.