Wie funktioniert String.Index in Swift

Ich habe einige meiner alten Codes und Antworten mit Swift 3 aktualisiert, aber als ich zu Swift Strings and Indexing kam, war es schwierig, die Dinge zu verstehen.

Insbesondere habe ich Folgendes versucht:

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

wo die zweite Zeile gab mir den folgenden Fehler

'advancedBy' ist nicht verfügbar: Um einen Index um n Schritte zu erweitern, rufen Sie 'index (_: offsetBy :)' für die CharacterView-Instanz auf, die den Index erstellt hat.

Ich sehe dasString hat die folgenden Methoden.

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)

Diese haben mich zuerst wirklich verwirrt und ich habe angefangen, mit ihnen zu spielen, bis ich sie verstanden habe. Ich füge unten eine Antwort hinzu, um zu zeigen, wie sie verwendet werden.