Aktualisiert für Swift 4
Überprüfen, womit ein String beginnt und womit endet
Mit den Methoden hasPrefix(_:)
und hasSuffix(_:)
können Sie die Gleichheit mit einem anderen String testen.
let str = "Hello, playground"
if str.hasPrefix("Hello") { // true
print("Prefix exists")
}
if str.hasSuffix("ground") { // true
print("Suffix exists")
}
Abrufen der tatsächlichen Präfix- und Suffix-Teilzeichenfolgen
Um den tatsächlichen Präfix- oder Suffix-Teilstring zu erhalten, können Sie eine der folgenden Methoden verwenden. Ich empfehle die erste Methode für die Einfachheit. Alle Methoden verwenden str
als
let str = "Hello, playground"
Methode 1: (empfohlen) prefix(Int)
undsuffix(Int)
let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground
Dies ist meiner Meinung nach die bessere Methode. Im Gegensatz zu den folgenden Methoden 2 und 3 stürzt diese Methode nicht ab, wenn die Indizes außerhalb der Grenzen liegen. Es werden nur alle Zeichen in der Zeichenfolge zurückgegeben.
let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground
Natürlich sind Abstürze manchmal gut, weil sie Sie wissen lassen, dass ein Problem mit Ihrem Code vorliegt. Betrachten Sie also auch die zweite Methode unten. Es wird ein Fehler ausgegeben, wenn der Index außerhalb der Grenzen liegt.
Methode 2: prefix(upto:)
undsuffix(from:)
Swift String-Indizes sind schwierig, da sie Sonderzeichen (wie Emoji) berücksichtigen müssen. Sobald Sie jedoch den Index erhalten haben, ist es einfach, das Präfix oder Suffix zu erhalten. (Siehe meine andere Antwort auf String.Index
.)
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground
Wenn Sie sich vor Überschreitungen schützen möchten, können Sie mit einen Index erstellen limitedBy
(siehe auch diese Antwort ).
Methode 3: Indizes
Da String eine Sammlung ist, können Sie Indizes verwenden, um das Präfix und das Suffix abzurufen.
let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello
let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground
Weiterführende Literatur