Как работает String.Index в Swift

Я обновлял часть своего старого кода и ответов с помощью Swift 3, но когда я перешел к Swift Strings и Indexing, мне было тяжело понимать вещи.

В частности, я пытался следующее:

let str = "Hello, playground"
let prefixRange = str.startIndex..<str.startIndex.advancedBy(5) // error

где вторая строка давала мне следующую ошибку

'advancedBy' недоступен: чтобы продвинуть индекс на n шагов, вызовите 'index (_: offsetBy :)' для экземпляра CharacterView, который создал индекс.

я вижу этоString имеет следующие методы.

str.index(after: String.Index)
str.index(before: String.Index)
str.index(String.Index, offsetBy: String.IndexDistance)
str.index(String.Index, offsetBy: String.IndexDistance, limitedBy: String.Index)

Сначала это действительно смущало меня, поэтому я начал играть с ними, пока не понял их. Я добавляю ответ ниже, чтобы показать, как они используются.

Ответы на вопрос(3)

Ваш ответ на вопрос